我遇到了hibernate HQL查询无法根据下面的where语句返回一种结果的问题。我有'actions',它有一个名为'event'的属性,对于一些不需要事件的动作,它可以为null。这是语句遇到问题的地方,当我检查'event.sections'时,它不会返回带有null事件的动作。如果我删除那些检查语句entity.event.section = 'xxx' or ...
,那么它就会开始工作。它应该返回的行匹配entity.owner = 'xxx'
和entity.assignee = 'xxx'
,这意味着我们有一个成功匹配,停止检查。对我来说奇怪的是,HQL似乎没有提到entity.event is not null
所以不要检查这些部分。
希望这很清楚,可以提供一些帮助。非常感谢!
(
(
(entity.status = '1')
and
(entity.owner = 'xxx' or entity.assignee = 'xxx' or (
entity.event is not null and (
entity.event.section = 'xxx1' or
entity.event.section = 'xxx2' or
entity.event.section = 'xxx3' or
entity.event.section = 'xxx4')
)
)
)
and entity.security = '1'
)