簡體   English   中英

Hibernate 條件限制對多個條件

[英]Hibernate criteria restriction on multiple criterias

我正在編寫一個標准查詢。 我的查詢針對與表屬性和用戶相對應的多個條件。 無論用戶是誰,如果 prop 為 12 或 13,它都會返回結果,或者如果 prop 為 NULL,則用戶必須是 loginInUser。 Sql 查詢的 where 條件如下,返回 4 行

where (property.PROP in (12,13) or (property.PROP is null
                 and user.loggedInUser = 'XYZ'))

我的標准

Criteria userQuery = session.createCriteria(User.class);
Criteria propertyQuery = userQuery .createCriteria("property");

  Criterion crt = (Criterion) userQuery.add(Restrictions.eq("loggedInUser", userId));

propertyQuery.add(
            Restrictions.or( 
                 Restrictions.in("prop",propList),
                    Restrictions.and(Restrictions.isNull("prop"),crt)
                            )
                 );

我的問題是 Restrictions.and(criterion,criterion) 將兩個標准作為參數。 但是,當類型轉換(Criterion)時,userQuery 上的第二個條件“crt”無效。 休眠會報錯。 如何在 Criteria 中實現此功能。 或如何編寫標准Restrictions.and(Restrictions.isNull("prop") , userQuery.add(Restrictions.eq("loggedInUser", userId)))

使用使用休眠條件的連接作為以下示例代碼:

 List cats = session.createCriteria(Cat.class)
     .createAlias("kittens", "kit")
     .add( Restrictions.like("kit.name", "Iz%") )
     .list();

注意:上面的代碼只是如何在休眠條件中使用 Join 的示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM