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
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 ...