簡體   English   中英

根據其他條件向條件添加多個參數

[英]Adding multiple arguments to criteria based on further conditions

我想創建一個Hibernate查詢,其標准根據其他條件動態更改

首先,創建標准。

if(條件1適用){在條件中添加另一個參數}

if(條件2適用){在條件中添加另一個參數} else {在條件中添加另一個參數}

最后,將結果放入列表中。

到目前為止我有這個片段。

不幸的是,我沒有提供測試環境所以我無法測試如果我在第一個之后放入另一個query.where命令會發生什么。 我想使用多個where子句,首先總是使用一個作為基礎,然后在滿足某些條件時添加更多。

session = HibernateUtil.openSession();

CriteriaBuilder cb = session.getCriteriaBuilder();
CriteriaQuery<MyClass> query = cb
        .createQuery(MyClass.class);

Root<MyClass> root = query.from(MyClass.class);

query.select(root);
query.where(
        cb.and(
                cb.equal(root.get("dataPointId"), container.getDataPointId()),
                cb.equal(root.get("datapointSubNumber"), subnumber)
        )
);

我想根據條件指定更多where子句,並將結果作為List<MyClass>

您可以使用CriteriaBuilder並將Predicates數組傳遞給它。 添加謂詞時,您可以根據條件構建動態列表。 您可以擁有復雜的邏輯並相應地構建謂詞數組。

像這樣的東西:

List<Predicate> predicates = new ArrayList<Predicate>();

if ( <some condition> ) {
    predicates.add(criteriaBuilder.like(<your query condition>));
} else {
    predicates.add(criteriaBuilder.equal(<your query condition>));
}

最后:

query.where(criteriaBuilder.and(predicates.toArray()));

暫無
暫無

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

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