Ben*_*Ben 9 java jpa dynamic criteria-api jpa-2.0
我使用JPA 2.0的CriteriaBuilder构建动态查询有点困难.
我猜有一个很常见的用例:用户提供任意数量的搜索参数X和/或连接:如:
select e from Foo where (name = X1 or name = X2 .. or name = Xn )
Run Code Online (Sandbox Code Playgroud)
方法或CriteriaBuilder不是动态的:
谓词或(谓词......限制)
想法?样品?
在您的情况下,我宁愿使用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));
Run Code Online (Sandbox Code Playgroud)
您可能需要使用Criteria API和Metamodel API检查基本类型安全查询以获取更多详细信息.
| 归档时间: |
|
| 查看次数: |
9511 次 |
| 最近记录: |