如何在Java中仅返回一个实例?

时间:2019-06-25 14:01:34

标签: java

我遇到一个问题,我得到三个对象而不是一个对象本身。 (您可以在下面看到我的架构和输出结果)。我需要做的就是返回对象映射器的列表,该列表可以转换数组中的集合。在我的控制器中,这是导致“ 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 个答案:

答案 0 :(得分:1)

代替列表返回单个对象

  public @ResponseBody AutoComplete getSalary();

答案 1 :(得分:1)

如果我正确理解了您的意图,那么这里的问题是,您正在检索仅需要单个实体的实体列表。

autocompleteRepository.findByJobClassCdStartsWith(jobClassCd);
简而言之:“神奇”的findByXXX方法返回列表或单个实体。您应该使用findOneByXXXX进行澄清。

检查此答案以获取更多信息,我认为解释得很清楚: Difference between findBy and findOneBy in Spring data JPA

答案 2 :(得分:0)

在您的评论之一中,您说my rateType it just only prints "annual" ... the other hourly and weekly rate types does not return。您是否有机会创建了3个具有相同ID但不同rateType的对象?在我看来,您需要将每个费率都设为一个数组。

public String[] rateAnnual;
public String[] rateBiweekly;
public String[] Hourly;