gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:26:31 25 4
gpt4 key购买 nike

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

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

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

最佳答案

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

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

关于java - 使用 JPQL 查询在 JPA 中进行查询组合、一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53917740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com