[英]JPA Criteria Api - Not in relation entities query
我在構建CriteriaQuery時遇到問題,以檢查此關系中未映射的實體。
@Entity
@Table(name="table1")
public class Entity1 {
//Some attributes
@Column
private Integer entity2ID;
}
@Entity
@Table(name="table2")
public class Entity2 {
private Integer id;
//Some attributes
@Column
private Boolean value;
}
CriteriaBuilder代碼:
public Query buildSelectQuery(EntityManager em, Criteria c) {
CriteriaBuilder cb = em.getCriteriaBuilder();
ConcreteCriteria criteria = (ConcreteCriteria) c;
CriteriaQuery<Entity1> cq = cb.createQuery(Entity1.class);
Root<Entity1> entity1root = cq.from(Entity1.class);
List<Predicate> predicates = buildPredicatesList(cb, entity1root, criteria); //other criteria in Entity1
if (criteria.isValueIsNull() != null) {
Root<Entity2> entity2root = cq.from(Entity2.class);
predicates.add(cb.equal(entity1root.get("entity2ID"), entity2root.get("id")));
predicates.add((criteria.isValueIsNull() ? cb.isNull(entity2root.get("value")) : cb.isNotNull(entity2root.get("value"))));
}
cq.where(predicates.toArray(new Predicate[predicates.size()]));
return em.createQuery(cq);
}
條件驗證失敗。 我如何構建CriteriaQuery,而不以一對一關系將Entity2
附加到Entity1
?
我找到了答案
該行有助於映射查詢中的對象。
cq.select(entity1root);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.