使用 JPQL 查询在 JPA 中进行查询组合,一对多关系

Making query combining, one to many relationships in JPA with JPQL query

我有一个数据库。具有一对多关系。

pet 1--* event.

我想进行查询,选择在给定日期发生过事件的所有宠物。 (我使用的是 SQL 日期格式)

截至目前,我只想获得所有实体的硬编码日期。

这是我的 PetEntity 中的引用 table

@OneToMany
private List<EventEntity> events = new ArrayList();

在我的 EventEntity

@ManyToOne
PetEntity pet;

我使用的模式是使用存储库处理数据层,然后使用外观处理任何逻辑(如果有的话)

到目前为止我已经做了这样的方法。

  public Set<PetEntity> getPetsWithEvents(Date date){
    EntityManager em = emf.createEntityManager();
    Set<PetEntity> entities = new HashSet<>();
    List<EventEntity> eventEntities=  
em.createQuery("SELECT e from EventEntity e where e.date =: date", EventEntity.class).setParameter("date", date).getResultList();
        for(EventEntity entity: eventEntities){
            entities.add(entity.getPet());
        }
        return  entities;
   }
}

有没有一种方法可以简单地将此方法转化为使用一个查询,而不是循环遍历通风口并找到每只宠物?

正如其他人已经提到的,您应该能够 select 宠物加入活动。 JPQL 将如下所示:

SELECT p FROM PetEntity p join p.events e
WHERE e.date =: date