我正在尝试实施OneToMany
关系并且在选择子记录时非常困难。
例如:Parent
P1有3个Child
个实体,Parent
P2有2个Child
个实体,比如说
但下面的代码返回
有趣的是,子实体的数量是正确的,但数据本身只是第一条记录的副本。我尝试设置不同,但似乎没有帮助。
CriteriaBuilder criteriaBuilder = db2EntityManager.getCriteriaBuilder();
CriteriaQuery<Parent> searchQuery = criteriaBuilder.createQuery(Parent.class);
Root<Parent> aRoot = searchQuery.from(Parent.class);
//Constructing list of parameters
List<Predicate> predicates = new ArrayList<>();
//Adding predicates in case of parameter not being null
predicates.add(criteriaBuilder.equal(aRoot.get("a"), "A"));
predicates.add(criteriaBuilder.equal(aRoot.get("b"), "B"));
predicates.add(criteriaBuilder.equal(aRoot.get("c"), "C"));
//query itself
searchQuery.select(aRoot).where(predicates.toArray(new Predicate[]{})).distinct(true);
TypedQuery<Parent> query = db2EntityManager.createQuery(searchQuery);
parentEntities = query.getResultList();
答案 0 :(得分:0)
原来问题在于Child实体中的Primary Key。复合键未返回唯一记录。