使用规范在非id列上使用JPA加入两个表

时间:2013-08-05 10:36:27

标签: jpa jpa-2.0 spring-data-jpa

是否可以使用规范在实体的非主键上连接两个表?如果是的话,你能告诉我怎么做吗?

该属性属于基本类型 - >长。

提前致谢。

1 个答案:

答案 0 :(得分:1)

找到问题的答案 希望它可以帮到某人。

Join<PARENT, CHILD> tableJoin = null;   
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<PARENT> criteriaQuery = criteriaBuilder.createQuery(PARENT.class);
Root<PARENT> from = criteriaQuery.from(PARENT.class); 
List<Predicate> predicateList = ByEntityCriteriaHelper.getPredicatesByPatternOnAttributes(entityManager, searchObject, from, criteriaQuery, criteriaBuilder);
Predicate[] predicates = new  Predicate[predicateList.size()];
tableJoin = from.join("CHILD");
predicateList.add(criteriaBuilder.equal(tableJoin.get("id") , searchObject.getChildObject.getId()));
criteriaQuery.where(predicateList.toArray(predicates));
TypedQuery<PARENT> typedQuery =  (TypedQuery<PARENT>)entityManager.createQuery(criteriaQuery);
List<PARENT> resultList = typedQuery.getResultList();