【问题标题】:Making query combining, one to many relationships in JPA with JPQL query使用 JPQL 查询在 JPA 中进行查询组合、一对多关系
【发布时间】:2018-12-24 21:16:24
【问题描述】:

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

pet 1--* event.

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

到目前为止,我只想能够获取所有实体,用于硬编码日期。

这是我的 PetEntity 表中的参考

@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;
   }
}

有没有办法让这种方法简单地使用一个查询,而不是遍历通风口并找到每只宠物?

【问题讨论】:

标签: java hibernate jpa repository jpql


【解决方案1】:

正如其他人已经提到的,您应该能够选择宠物加入事件。 JPQL 将如下所示:

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

【讨论】:

    猜你喜欢
    • 2014-07-30
    • 2014-04-08
    • 1970-01-01
    • 2021-10-21
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多