我在使用 JPA 2.0 的 CriteriaBuilder 构建动态查询时有点卡住了。
我猜想我有一个相当常见的用例:用户提供任意数量的搜索参数 X 和/或连接:例如:
select e from Foo where (name = X1 or name = X2 .. or name = Xn )
CriteriaBuilder 的 Method 或 不是动态的:
谓词或(谓词...限制)
有想法吗?样品?
在你的情况下,我宁愿使用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));
您可能想检查使用 Criteria API 和 Metamodel API 的基本类型安全查询更多细节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)