是否可以使用 criteria-builder 执行一对多外键 JOIN?
Is it possible to perform a One-To-Many foreign-key JOIN with criteria-builder?
假设有以下两个数据库模型:
所有者: id
, name
宠物: id
, name
, owner
其中 Pet.owner
是 Owner
的 id
的外键
您能否使用 criteria builder join?
SQL 查询类似于:
SELECT o FROM Owner o JOIN Pet p ON o.id = p.owner
WHERE o.name LIKE 'Denise' AND p.name LIKE 'Bella'
Sorting options will also be used, so it is only possible to use the criteria queries, instead of creating a typed query directly (and setting parameters).
当然是。您可以使用 Criteria API 完成您可以使用 JPQL 完成的一切。
阅读教程:https://www.objectdb.com/java/jpa/query/criteria
您的查询将如下所示:
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<Owner> criteriaQuery = criteriaBuilder.createQuery(Owner.class);
Root<Pet> pet = criteriaQuery.from(Pet.class);
Join<Pet, Owner> owner = pet.join(Pet_.owner);
criteriaQuery
.select(owner)
.where(criteriaBuilder
.and(
criteriaBuilder.like(owner.get(Owner_.name), "Denise"),
criteriaBuilder.like(pet.get(Pet_.name), "Bella")));
List<Owner> resultList = em.createQuery(criteriaQuery).getResultList();
假设有以下两个数据库模型:
所有者: id
, name
宠物: id
, name
, owner
其中 Pet.owner
是 Owner
的 id
您能否使用 criteria builder join?
SQL 查询类似于:
SELECT o FROM Owner o JOIN Pet p ON o.id = p.owner
WHERE o.name LIKE 'Denise' AND p.name LIKE 'Bella'
Sorting options will also be used, so it is only possible to use the criteria queries, instead of creating a typed query directly (and setting parameters).
当然是。您可以使用 Criteria API 完成您可以使用 JPQL 完成的一切。
阅读教程:https://www.objectdb.com/java/jpa/query/criteria
您的查询将如下所示:
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<Owner> criteriaQuery = criteriaBuilder.createQuery(Owner.class);
Root<Pet> pet = criteriaQuery.from(Pet.class);
Join<Pet, Owner> owner = pet.join(Pet_.owner);
criteriaQuery
.select(owner)
.where(criteriaBuilder
.and(
criteriaBuilder.like(owner.get(Owner_.name), "Denise"),
criteriaBuilder.like(pet.get(Pet_.name), "Bella")));
List<Owner> resultList = em.createQuery(criteriaQuery).getResultList();