我有一个数据库,其中的节点指向父子关系中的其他节点,还有一个查找表,用于在Web地址和节点之间进行转换。
我需要获取有关节点及其父节点和子节点的信息,但每次通过查找表获取节点时,它只加载与该节点相关的数据(名称等)是否有任何方法可以通过这个懒惰加载和获取更多数据?
我的数据结构:
NodeLookup:
long id;
String url;
Node node;
Node:
long id;
String name;
List<Node> parents; //@ManyToMany
List<Node> childrens; //@ManyToMany
现在我通过NodeLookup表获取一个节点来解决它,并使用节点的id来获取真实的节点,但这似乎是浪费资源。
(我正在使用播放框架)
答案 0 :(得分:1)
默认情况下,JPA对关系使用延迟加载。如果要在加载节点时加载关系,则必须使用预先加载:
@ManyToMany(fetch=FetchType.EAGER)
List<Node> parents;
@ManyToMany(fetch=FetchType.EAGER
List<Node> childrens;