收集的Criteriabuilder和CriteriaQuery之间的差异



有什么区别
  • criteriabuilder.in(谓词);
  • criteriaquery.where(predicate);

这似乎给出了相同的结果。我想念什么吗?我们应该在查询上方选择构建器吗?

完成示例:

List<String> names = new ArrayList<String>();
names.add("John");
names.add("Emma");
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<PersonEntity> criteriaQuery = criteriaBuilder.createQuery(PersonEntity.class);
Root<PersonEntity> root = criteriaQuery.from(PersonEntity.class);
Predicate predicate = root.get(PersonEntity_.name).in(names);
criteriaBuilder.in(predicate);
// or alternative: criteriaQuery.where(predicate);
List<PersonEntity> list = entityManager.createQuery(cq).getResultList();

criteriabuilder.in(谓词)创建一个新的谓词。如果提供商将谓词添加到查询中,则应向您提交错误,因为这将无法移植。根据规范,它会创建一个新的谓词,就像root.get(personity_.name).in(names)一样。查询仅在添加到谓词的情况下,例如通过调用criteriaquery..where(predicate)。

相关内容

  • 没有找到相关文章

最新更新