Cra*_*ing 1 java hibernate jpa jpa-2.0
我想使用参数表达式作为in子句的一部分.我想查询一个包含一组条形图中的条形图的Foo列表.这可能吗?
Foo
// Join, ManyToOne
Bar getBar()
Query
ParameterExpression<???> barParameter;
void setup() {
CriteriaBuilder builder = ...
CriteriaQuery<Foo> criteria = ...
Root<Bar> root = ...
barParameter = builder.parameter(???);
criteria.where(
builder.in(root.get(Foo_.bar)).value(barParameter)
);
}
List<Foo> query(Set<Bar> bars) {
TypedQuery<Foo> query = createQuery();
query.setParameter(barParameter, bars);
return query.getResultList();
}
Run Code Online (Sandbox Code Playgroud)
使用in表达式,您只能使用原始比较类型,因此您需要进行连接并比较基本类型的字段(这里我使用过Integer id):
Root<Foo> foo = cq.from(Foo.class);
Join<Foo, Bar> bar = foo.join(Foo_.bar);
ParameterExpression<Collection> bars = cb.parameter(Collection.class);
cq.where(bar.get(Bar_.id).in(bars));
TypedQuery<Foo> tq = em.createQuery(cq);
Collection<Integer> barsParameter = new ArrayList<Integer> ();
barsParameter.add(1);
List<Foo> resultList = tq.setParameter(bars, barsParameter).getResultList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3590 次 |
| 最近记录: |