0
我正在開發一個基於JPA的項目,我有兩個實體,比如學生和學校。每個學生都有一所學校。JPA懶性屬性獲取客戶屬性
學生學校屬性獲取類型是懶惰的,但我需要能夠熱切地獲取學校名稱屬性。
有沒有辦法做到這一點?
感謝對respoding
我正在開發一個基於JPA的項目,我有兩個實體,比如學生和學校。每個學生都有一所學校。JPA懶性屬性獲取客戶屬性
學生學校屬性獲取類型是懶惰的,但我需要能夠熱切地獲取學校名稱屬性。
有沒有辦法做到這一點?
感謝對respoding
如果你正在使用JPA 2.1,你可以嘗試的Entity Graph,表示要加載的屬性:
@Entity
@NamedQueries({
@NamedQuery(name = "Student.findAll", query = "SELECT s FROM Student s")
})
@NamedEntityGraphs({
@NamedEntityGraph(
name = "studentGraph",
attributeNodes = {
@NamedAttributeNode(value = "id"),
@NamedAttributeNode(value = "name"),
@NamedAttributeNode(value = "school", subgraph = "schoolGraph")
},
subgraphs = {
@NamedSubgraph(
name = "schoolGraph",
attributeNodes = {
@NamedAttributeNode("name")
}
)
}
)
})
public class Student {
@Id
private Long id;
private String name;
@ManyToOne
private School school;
}
而使用如下:
List<Student> students = entityManager.createNamedQuery("Student.findAll")
.setHint("javax.persistence.fetchgraph", entityManager.getEntityGraph("studentGraph"))
.getResultList();
實體圖也可以動態創建。