gpt4 book ai didi

java - JPA 惰性属性获取自定义属性

转载 作者:行者123 更新时间:2023-12-02 04:14:17 25 4
gpt4 key购买 nike

我正在开发一个基于 JPA 的项目,我有两个实体,例如学生和学校。每个学生都有一所学校。

学生学校属性获取类型是惰性的,但我需要能够仅急切地获取学校名称属性。

有办法做到这一点吗?

感谢您的回复

最佳答案

如果您使用的是 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();

实体图也可以动态创建。

关于java - JPA 惰性属性获取自定义属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33477407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com