在做基於字符串的查詢,可以使用「身份證」的關鍵字上多到一個屬性如:CriteriaBuilder多到一個限制的ID
from Enrolment where person.id=:personId
在這種情況下,這將產生sql:
select * from enrolment where person_id=?
如何使用CriteriaBuilder實現相同?
CriteriaQuery<Enrolement> query = criteriaBuilder.createQuery(Enrolement.class);
Root<Enrolement> root = query.from(Enrolment.class);
query.select(root);
// Does not work
query.where(criteriaBuilder.equal(root.get("person.id"), 1L));
// Does not work
query.where(criteriaBuilder.equal(root.get("person").root.get("personId"), 1L));
我想你可以加入到人,並添加一個限制的人根但在我看來是矯枉過正。
你試過query.where(criteriaBuilder.equal(root。 get(「person.id」),1L));和query.where(criteriaBuilder.equal(root.get(「person」)。get(「personId」),1L)); –
Koitoer
2014-01-24 23:39:17