gpt4 book ai didi

java - 使用 Criteria API 的动态 JPA 2.0 查询

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:20:12 25 4
gpt4 key购买 nike

我在使用 JPA 2.0 的 CriteriaBuilder 构建动态查询时遇到了一些困难。

我猜我有一个很常见的用例:用户提供任意数量的搜索参数 X 和/或连接:像:

select e from Foo where (name = X1 or name = X2 .. or name = Xn )

CriteriaBuilder 的方法或方法不是动态的:

Predicate or(Predicate...限制)

想法? sample ?

最佳答案

在你的情况下,我宁愿使用 Expression#in(Collection)避免循环和构建复合 Predicate动态:

CriteriaBuilder cb = em.getCriteriaBuilder();

CriteriaQuery<Foo> cq = cb.createQuery(Foo.class);
Metamodel m = em.getMetamodel();
EntityType<Foo> Foo_ = m.entity(Foo.class);
Root<Foo> foo = cq.from(Foo_);
cq.where(my.get(Foo_.name).in(params));

您可能想查看 Basic Type-Safe Queries Using the Criteria API and Metamodel API了解更多详情。

关于java - 使用 Criteria API 的动态 JPA 2.0 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2510106/

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