Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate未返回结果集中具有空值的字段_Hibernate_Spring Mvc_Spring Roo - Fatal编程技术网

Hibernate未返回结果集中具有空值的字段

Hibernate未返回结果集中具有空值的字段,hibernate,spring-mvc,spring-roo,Hibernate,Spring Mvc,Spring Roo,我有一个存储库调用: @Query("select t1.field1, t2.field2, t3.field3 from t1 join t1.t2 join t1.t3 where t1.id = :idUser") List<Object> getUserProfile(@Param("idUser") String idUser); 如果 t2.2 如果为null,则数组“o”具有以下索引:o[0],o[2],因此一旦我迭代索引1,就会出现异常,因为索引1不存在。如您所见

我有一个存储库调用:

@Query("select t1.field1, t2.field2, t3.field3 from t1 join t1.t2 join t1.t3 where t1.id = :idUser")
List<Object> getUserProfile(@Param("idUser") String idUser);
如果 t2.2

如果为null,则数组“o”具有以下索引:o[0],o[2],因此一旦我迭代索引1,就会出现异常,因为索引1不存在。如您所见,索引不是连续的[0,1,2]

解决方法是验证查询中的空值。但我想这对开发人员来说是不好的,或者至少对Hibernate来说不是这样

Roo 1.2.4;Java1.7;春季3.2,冬眠4.2.2

然而,如果这是Hibernate中的一个bug,这可能是一个巨大的问题。。有人能帮我解答这个疑问吗


谢谢!/JR.

最好的方法是定义一个ViewDTO,其中包含一个构造函数,以获取所有三个select参数

  • t1.1字段
  • t2.2
  • t3.3
还向所有这些字段添加getter

并将查询更改为:

select NEW mypackage.ViewDTO(t1.field1, t2.field2, t3.field3) from ...
因此,您将获得ViewDTO列表,而不是数组。这样可以更好地处理空值


有关更多详细信息,请参见

您不需要从ResultSet中获取值,Spring数据可以为您提供


看看

谢谢你,弗拉德,埃鲁伊兹,你的支持帮了我很多忙。我试着点击向上箭头来获得好的答案,但我得到了:向上投票需要15条声誉信息。
select NEW mypackage.ViewDTO(t1.field1, t2.field2, t3.field3) from ...