したがって、3つのモデルがあります。Cragには1つ以上のCragLocationがあり、各CragLocationにはLocationがあります。を使用して、岩山の特定のサブセットをクエリできます
public List<Crag> getCragsWithGridRef() {
/**
* we want to query select c.* from crag c join CragLocation cl on c.id
* = cl.cragId join Location l on cl.locationId = l.id where
* len(l.gridReference)>1
*/
TypedQuery<Crag> query =
em.createQuery(
"SELECT c FROM Crag c JOIN c.CragLocations cl JOIN cl.location l where LENGTH(l.gridReference) > 1",
Crag.class);
return query.getResultList();
}
私の脳は基準クエリを処理できないため、私は主にこの方法でクエリを実行しています。私はそれらを見ているときに意味を解析するのに苦労しています。
それで、基準クエリを好むパフォーマンスまたは保守性(または他の)理由がありますか?もしそうなら、このクエリをどのように表現しますか?