私はデータベースを持っています。1対多の関係で。
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;
}
}
ベントをループして各ペットを見つける代わりに、このメソッドを1つのクエリを使用するように単純にメソッド化する方法はありますか?
他の人がすでに述べたように、あなたはペット参加イベントを選択することができるはずです。JPQLは次のようになります。
SELECT p FROM PetEntity p join p.events e
WHERE e.date =: date
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加