我需要为这个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)
role_ids 将包含值组合(101,102,150,151) 如果Role_Id为150或151,OR部分只需要在那里。
USER_ROLE 表包含 Role_id &的 STATE_ID 即可。只有角色101& 102与state_ids相关联。
如果所有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是对的。
答案 0 :(得分:4)
这样的事情应该有效 - 用相应的限制条件替换'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))
)