Hibernate 什么';这个HQL有什么问题“;返回用于在联接查询中选择实体的空值";

Hibernate 什么';这个HQL有什么问题“;返回用于在联接查询中选择实体的空值";,hibernate,null,Hibernate,Null,此查询为ccrd.createdDate提供有效值,但为s1实体返回NULL。 我已经在CrComponentRelDependency和crComponentDependencyDtls之间定义了一对一的关系,HQL为您执行所有联接,因此不要显式联接表。试试这个: session.createQuery("select ccrd.createdDate , s1 " + "from CrComponentRelDependency ccrd " + "left outer join

此查询为ccrd.createdDate提供有效值,但为s1实体返回NULL。
我已经在CrComponentRelDependencycrComponentDependencyDtls之间定义了一对一的关系,HQL为您执行所有联接,因此不要显式联接表。试试这个:

session.createQuery("select ccrd.createdDate , s1 "
+  "from  CrComponentRelDependency ccrd "   
+  "left outer join ccrd.crComponentDependencyDtls s1 "   
+  "where ccrd.crComponent.componentSeq= :COMPONENT_SEQ " 
+  "and (ccrd.referencedComponentVer IS NULL) "
 .setParameter("COMPONENT_SEQ", componentId);

还请注意,从HQL中删除了不必要的限定和括号。

HQL为您完成所有连接,因此不要显式连接表。试试这个:

session.createQuery("select ccrd.createdDate , s1 "
+  "from  CrComponentRelDependency ccrd "   
+  "left outer join ccrd.crComponentDependencyDtls s1 "   
+  "where ccrd.crComponent.componentSeq= :COMPONENT_SEQ " 
+  "and (ccrd.referencedComponentVer IS NULL) "
 .setParameter("COMPONENT_SEQ", componentId);

请注意,HQL中删除了不必要的限定条件和括号。

你好,波希米亚人,谢谢你的建议。我尝试了上面的查询,但它将始终为createdDate字段返回有效日期,为第二个值返回null。我遗漏了什么吗?你没有发布足够的信息让我进一步帮助你。事实上,大部分我都猜到了。我不知道你的桌子布局是什么,也不知道你有什么数据。嗨,波西米亚人,谢谢你的建议。我尝试了上面的查询,但它将始终为createdDate字段返回有效日期,为第二个值返回null。我遗漏了什么吗?你没有发布足够的信息让我进一步帮助你。事实上,大部分我都猜到了。我不知道你的表格布局是什么,也不知道你有什么数据。