0

我需要为此 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 = 150)

role_ids将具有的组合 (101,102,150,151) OR 部分仅在 Role_Id 为 150 或 151 时才需要存在。

USER_ROLE表具有Role_idstate_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 是正确的。

4

1 回答 1

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))
         )
于 2012-07-17T16:50:14.480 回答