2013-07-25 65 views
0

我得到了ManyToMany實體帳戶與實體角色。NullPointerException得到ManyToMany關係

@Entity 
public class Account { 

    @Id @GeneratedValue(strategy=GenerationType.SEQUENCE) 
    private Long id; 

    @ManyToMany(cascade= {CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REFRESH}, fetch=FetchType.EAGER) 
    @JoinTable(name="Account_Role") 
    private Set<Role> roles; 

    // getters, setters 
} 

當我嘗試訪問關係集合我得到NullPointerException異常的角色爲null:

Account account = new Account(); 
account.getRoles().size(); 

不宜空集被注入roles?或者是默認的行爲,我應該通過控制roles創作:

private Set<Role> roles = new HashSet()<>; 

回答

1

您剛剛創建不是由JPA管理的對象

Account account = new Account(); 

。你如何期望它不爲空?

引用類型實例變量默認分配爲nullSet是一個參考類型。您應該自己創建Set(如您所建議的)。

private Set<Role> roles = new HashSet()<>; 

或從JPA EntityManager實例

Account account = entityManager.find(Account.class, 42); 
檢索實體實例