2016-06-20 173 views
0

JPA:如何告訴CriteriaQuery獲取懶惰屬性? 例如,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?

有關讀取懶惰的實體,我可以用取

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

使用EntityGraph就像答案說的那樣。另請參閱https://stackoverflow.com/questions/37049358/hibernate-load-entities-with-fields-defined-at-runtime/37053402#37053402 –

回答