gpt4 book ai didi

java - 根据更多条件向条件添加多个参数

转载 作者:行者123 更新时间:2023-11-29 04:08:02 24 4
gpt4 key购买 nike

我想创建一个 Hibernate 查询,其标准会根据进一步的条件动态变化

示例

First, create criteria.

if (condition 1 applies) {add another argument to the criteria}

if (condition 2 applies) {add another argument to the criteria} else {add another argument to the criteria}

Finally, get the result in a list.

到目前为止我有这个片段。

不幸的是,我没有提供测试环境,所以我无法测试如果我再放一个 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 传递给它。在添加谓词时,您可以根据条件使用 if-else 来构建动态列表。您可以拥有复杂的逻辑并相应地构建谓词数组。

像这样:

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()));

关于java - 根据更多条件向条件添加多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57041853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com