我怎么能决定在JPA中加载多少数据?

时间:2011-02-26 10:57:24

标签: hibernate jpa playframework

我有一个数据库,其中的节点指向父子关系中的其他节点,还有一个查找表,用于在Web地址和节点之间进行转换。

我需要获取有关节点及其父节点和子节点的信息,但每次通过查找表获取节点时,它只加载与该节点相关的数据(名称等)是否有任何方法可以通过这个懒惰加载和获取更多数据?

我的数据结构:

NodeLookup: 
    long id;   
    String url;  
    Node node;  

Node:  
    long id;  
    String name;  
    List<Node> parents; //@ManyToMany  
    List<Node> childrens; //@ManyToMany  

现在我通过NodeLookup表获取一个节点来解决它,并使用节点的id来获取真实的节点,但这似乎是浪费资源。

(我正在使用播放框架)

1 个答案:

答案 0 :(得分:1)

默认情况下,JPA对关系使用延迟加载。如果要在加载节点时加载关系,则必须使用预先加载:

@ManyToMany(fetch=FetchType.EAGER)
List<Node> parents;

@ManyToMany(fetch=FetchType.EAGER
List<Node> childrens;