映射到pojo列表的JPA命名查询的结果在从查询执行中未收到任何数据时不返回空列表

时间:2016-07-14 11:03:03

标签: java hibernate jpa

我在 jpa hibernate实现)中有一个命名查询,其结果将映射到自定义pojo列表(myresult.java) 。在一种情况下,查询不返回任何值,我希望返回一个空列表。相反,我得到一个列表,其中包含一个类型为“myresult”的对象,所有成员都初始化为null。 我不明白为什么会这样......任何帮助都非常感谢.. 提前谢谢。

2 个答案:

答案 0 :(得分:0)

我认为您的问题的原因在此链接中有解释

Can javax.persistence.Query.getResultList() return null?

在JPA中返回空,返回null,然后在你的情况下将null添加到列表中返回,我使用spring-data并返回一个空列表,我不知道为什么hibernate决定使用这种方法返回的地方是一个空列表

答案 1 :(得分:0)

经过相当多的试验后,我发现Jpa hibernate实现了如果只从命名查询中返回聚合值,那么在“无数据”的情况下,不返回空列表的pojos。而是返回具有单个对象的列表,该对象具有为属性设置的适当默认值(对于sum为null,对于count等为0)。但是,如果仅选择列值或列值以及聚合,则将返回空列表。