简体   繁体   English

JPA Criteria Api-不在关联实体查询中

[英]JPA Criteria Api - Not in relation entities query

I have a problem with building CriteriaQuery, to check not mapped entity in this relation. 我在构建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 code: 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);
}

criteria fails on validating. 条件验证失败。 How can i build CriteriaQuery, without appending Entity2 to Entity1 in one to one relation? 我如何构建CriteriaQuery,而不以一对一关系将Entity2附加到Entity1

I found the answer 我找到了答案

That line helps mapping objects in query. 该行有助于映射查询中的对象。

cq.select(entity1root);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM