Как вернуть только один экземпляр в Java? - PullRequest
0 голосов
/ 25 июня 2019

Я подхожу к проблеме, когда я получаю три объекта вместо одного объекта.(Вы можете увидеть мою схему и выходной результат, который я получаю ниже).Все, что мне нужно сделать, это вернуть список Object Mapper, который может преобразовать коллекцию в массив.В моем контроллере это причина "public @ResponseBody List", помогите мне напечатать его как мою схему.Спасибо за помощь ..!

Контроллер:

@RestController
public class AutoCompleteController {

    private AutoCompleteService autoCompleteService;
    private EntityManager em;

    public AutoCompleteController(AutoCompleteService autoCompleteService, EntityManager em){
        this.autoCompleteService = autoCompleteService;
        this.em = em;
    }

    @RequestMapping(value = "jobs", method = RequestMethod.GET)
    public @ResponseBody List<AutoComplete> getSalary(@RequestParam(value = "autocomplete") String autocompleteValue) {
      return autoCompleteService.retrieveSalary(autocompleteValue);
    }

    public void getAllSalaries(HttpServletResponse res) {
        Stream<AutoComplete> stream = autoCompleteService.retrieveAllSalaries();
        DataStreamUtility.streamObjects(stream, res, em);
    }

    @RequestMapping(value = "/jobs")
    public @ResponseBody List < AutoComplete > getSalary(@RequestParam(value = "autocomplete", defaultValue = "1400") String autocompleteValue) {
        return autoCompleteService.retrieveSalary(autocompleteValue);
     }

    public void getAllSalaries(HttpServletResponse res) {
      Stream < AutoComplete > stream = autoCompleteService.retrieveAllSalaries();
      DataStreamUtility.streamObjects(stream, res, em);
    }
}

Ответы [ 3 ]

1 голос
/ 25 июня 2019

Если я правильно понял ваше намерение, проблема в том, что вы извлекаете список сущностей, для которых вы хотели только одну сущность.

autocompleteRepository.findByJobClassCdStartsWith(jobClassCd);

В двух словах: «магические» методы findByXXX возвращают либо список, либо одну сущность; вы должны использовать findOneByXXXX вместо этого, чтобы уточнить.

Проверьте этот ответ для получения дополнительной информации, я думаю, что это довольно хорошо объяснено: Разница между данными findBy и findOneBy в Spring JPA

1 голос
/ 25 июня 2019

Вместо списка возвращаем один объект

  public @ResponseBody AutoComplete getSalary();
0 голосов
/ 25 июня 2019

В одном из ваших комментариев вы говорите my rateType it just only prints "annual" ... the other hourly and weekly rate types does not return. Случайно ли вы создали 3 объекта с одинаковым идентификатором, но разными типами тарифов? Для меня это звучит так, как будто вам нужно сделать ставки массивом для каждого.

public String[] rateAnnual;
public String[] rateBiweekly;
public String[] Hourly;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...