2014-12-20 59 views
0

我有一個角色節點,其中包含一些我試圖堅持到Neo4j中的特權。當我構建對象時,我看到這些特權存在,但在保存調用後它們消失了。節點將不會堅持到Neo4j

這裏是我的角色節點:

@NodeEntity 
public class Role { 

    @GraphId Long id; 
    private RoleType roleType; 

    //@RelatedToVia(type="HAS_ROLE", direction=Direction.OUTGOING) 
    private List<Person> users; 

    private List<Privilege> defaultPrivileges; 
    //private List<Task> tasks; 


    public Role(){} 

    public Role(RoleType roleType){ 
     this.roleType=roleType; 
     this.defaultPrivileges=roleType.getDefaultPrivileges(); 
    } 

} 

這裏是我的拯救:

admin= roleRepository.save(admin); 

之前,我保存對象時,它被完全填充,它是空的了。任何想法,爲什麼這可能是

編輯: 導致此問題的代碼是在我的特權級別。

這不起作用:

public class Privilege { 

    private String name; 

    public Privilege(PrivilegeType pt) { 
     this.name = pt.name(); 
    } 
} 

這工作:

public class Privilege { 

    private String name; 

    public Privilege(String pt) { 
     this.name = pt; 
    } 
} 

爲什麼會是這樣導致它不會持續?我在RoleRepository中缺少什麼?

回答

1

它在存儲它之後重新加載實體,並且默認情況下它只加載相關信息的淺表副本。

您可以使用template.fetch(role.users)template.fetch(role.tasks) 或將@Fetch添加到任務列表中。

+0

是的,這是問題所在。 – Dan