所以我有三个模型.. Crag 有一个或多个 CragLocation,每个 CragLocation 都有一个 Location。我可以使用查询某个 crags 子集
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();
}
我主要以这种方式查询,因为我的大脑无法处理标准查询。当我看着它们时,我很难解析它们的含义。
那么是否有性能或可维护性(或其他)理由更喜欢标准查询,如果是,您将如何表达此查询?