如何创建具有多对多关系的JPA CriteriaBuilder

时间:2020-10-14 20:31:02

标签: mysql spring-boot jpa many-to-many hibernate-criteria

使用Spring Boot JPA。 我有两个表与many2many关系。 我的表是:

  1. property_tbl
  2. amenity_tbl(:名称)
  3. property_amenity_tbl(:property_id,amenity_name)

我想从 property_tbl 获取包含全部便利设施列表中项目的项目。

我进行了查询(不确定这是否是最好的写作,但是否可行)

SELECT * from property_tbl where id in (SELECT p.id FROM property_tbl p join property_amenity_tbl pa on p.id = pa.property_id where pa.amenity_name in ('amenity_1','amenity_2'...) group by p.id HAVING COUNT(pa.amenity_name) = 2);

我想使用条件构建器获得相同的查询

@Override
public List<Property> findPropertyByParam(Params params) {
    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<Property> cq = cb.createQuery(Property.class);

    Root<Property> property = cq.from(Property.class);

    // add the query here
    // params.getAmenities()..

    List<Property> result = em.createQuery(cq).getResultList();
    return result;
}

我应该如何写此标准

0 个答案:

没有答案