Hibernate标准使用和/或一起使用

时间:2012-07-17 16:37:15

标签: 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)

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是对的。

1 个答案:

答案 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))
         )