JPA:如何告诉CriteriaQuery在返回的实体中包含延迟属性?

时间:2016-06-20 23:29:16

标签: jpa properties lazy-evaluation

JPA:如何告诉CriteriaQuery获取延迟属性? 例如,

学生实体具有声明为懒惰的描述属性。

public class Student {

    @Basic(fetch=FetchType.LAZY)
    public String getDescription() {
           ...
    }
}

检索所有渴望获取说明的学生:

CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<Student> criteriaQuery = criteriaBuilder.createQuery(Student.class);
Root<Student> root = criteriaQuery.from(Student.class);
criteriaQuery.distinct(true);
TypedQuery<Student> query = em.createQuery(criteriaQuery);
List<Student> students = query.getResultList();

如何告诉CriteriaQuerty在查询结果中包含student.description?

对于获取延迟实体,我可以使用fetch

root.fetch("courses", JoinType.LEFT);

1 个答案:

答案 0 :(得分:2)

您可以使用实体加载图。这是相当新的,我认为它只在JPA2.1中得到支持。

http://www.thoughts-on-java.org/jpa-21-entity-graph-part-1-named-entity/