Hibernate 使用和/或同时休眠条件
我需要为此SQL编写一个hibernate标准:Hibernate 使用和/或同时休眠条件,hibernate,criteria,Hibernate,Criteria,我需要为此SQL编写一个hibernate标准: select distinct USER_ID from USER_ROLE where USER_TERM_DT is null and ((ROLE_ID in (101,102) and STATE_ID in ('MD')) or ROLE_ID = 150) 角色\u id将有一组值(101102150151) 仅当角色Id为150或151时,OR部件才需要存在 用户角色表具有角色id&状态id。只有角色101和102与状态I
select distinct USER_ID from USER_ROLE
where USER_TERM_DT is null
and ((ROLE_ID in (101,102)
and STATE_ID in ('MD')) or ROLE_ID = 150)
角色\u id将有一组值(101102150151)
仅当角色Id为150或151时,OR部件才需要存在
用户角色表具有角色id&状态id。只有角色101和102与状态ID关联
如果所有4个role_id值都存在,则SQL将如下所示:
select distinct USER_ID from USER_ROLE
where USER_TERM_DT is null
and ((ROLE_ID in (101,102)
and STATE_ID in ('MD')) or ROLE_ID in (150,151))
请帮忙处理这件事。我在读一篇文章,我需要同时使用连接和分离,但就是不能写出正确的代码。希望这很清楚&我的SQL是对的。类似的方法应该可以工作-用相应的限制替换'is null'和'in'表达式
criteria.conjuction()
.add(USER_TERM_DT is null )
.add(criteria.disjuction().
add(
criteria.conjuction()
.add(ROLE_ID in (101,102) )
.add(STATE_ID in ('MD'))
)
.add(ROLE_ID in (150,151))
)
类似的方法应该可以工作-用相应的限制替换'is null'和'in'表达式
criteria.conjuction()
.add(USER_TERM_DT is null )
.add(criteria.disjuction().
add(
criteria.conjuction()
.add(ROLE_ID in (101,102) )
.add(STATE_ID in ('MD'))
)
.add(ROLE_ID in (150,151))
)
你能展示一下你使用连接和分离的尝试吗?它看起来与下面的示例代码相似。你想让我把实际的代码,我得到的工作?你能展示你在使用连接和分离的尝试吗?它看起来类似于下面的示例代码。你想让我把实际的代码,我得到的工作?谢谢卡马尔。它起作用了!但是SQL显示了类似的内容:从USER_ROLE中选择不同的USER_ID,其中SER_TERM_DT为null并且((((((?,?)中的ROLE_ID和(?)中的STATE_ID)或(?)中的ROLE_ID))是否有任何方法删除所有这些额外的括号,或者这样可以吗?再次非常感谢!不确定,额外的括号通常没有什么区别。您是否得到了错误的结果或执行计划不同?如果没有,你能接受这个答案吗。我得到了正确的结果,但是看到那些额外的括号很烦人&看起来我遗漏了什么。谢谢Kamal。它起作用了!但是SQL显示了类似的内容:从USER_ROLE中选择不同的USER_ID,其中SER_TERM_DT为null并且((((((?,?)中的ROLE_ID和(?)中的STATE_ID)或(?)中的ROLE_ID))是否有任何方法删除所有这些额外的括号,或者这样可以吗?再次非常感谢!不确定,额外的括号通常没有什么区别。您是否得到了错误的结果或执行计划不同?如果没有,你能接受这个答案吗。我得到了正确的结果,但是看到那些额外的括号很烦人&看起来我遗漏了什么。