我已经对本文档有一个很简单的问题,使用标准API创建查询:documentation标准API:使用标准API创建查询文档
在这里,你可以阅读CriteriaBuilder接口部分的表达方法以下有关and
方法在这一部分:表35-3复合谓语方法在CriteriaBuilder接口 和方法使用例子:
CriteriaQuery<Pet> cq = cb.createQuery(Pet.class);
Root<Pet> pet = cq.from(Pet.class);
cq.where(cb.equal(pet.get(Pet_.name), "Fido")
.and(cb.equal(pet.get(Pet_.color), "brown"))
但实际上,这并不是因为这里的where
方法后,你可以工作不叫.and()
... 的正确用法是:
CriteriaQuery<BookEntity> cq = cb.createQuery(Pet.class);
Root<Pet> pet = cq.from(Pet.class);
cq.where(cb.and(cb.equal(pet.get(Pet_.name), "Fido"),
cb.equal(pet.get(Pet_.color), "brown")));
那么这是为什么?也许有一些版本差异? 或者,也许这只是文档中的一些错误,但在这种情况下,我会留下这个用法的一个很好的例子。
“教程”是错误的,并且还有其他错误。使用其中一个JPA提供商提供的文档,或者参考JPA规范 –
谢谢你的回答尼尔!其实我必须在我的作业中使用这个API。我们无法使用任何供应商特定解决方案。但再次感谢。实际上,您是否知道这个Criteria-Api的指南或教程或文档,它没有错误,并且不仅提供供应商特定的解决方案? – F3R1
JPA规范和javadocs是权威性指南。除此之外,这一个http://www.datanucleus.org:15080/products/accessplatform_5_1/jpa/query.html#criteria –