2013-10-05 75 views
0

我該如何註釋HashMap<Enum, Boolean>以便JPA可以保留它?如何JPA映射一個HashMap?

@Entity 
public class User { 
    private Map<UserType, Boolean> settings; 
} 

public enum UserType { 
    USER, ADMIN 
} 

我想@ManyToMany(cascade = CascadeType.ALL)但是這給了我一個錯誤Boolean不是一個實體(這當然​​是正確的)。

回答

2

@ManyToMany對於HashMap不是最佳解決方案。使用@ElementCollection註釋來映射您的表,中間表將生成名爲user_type(如annotaion中定義的)。以下是註釋示例:

@ElementCollection 
    @CollectionTable(name = "user_type") 
    @MapKeyColumn(name = "user_type_col") 
    @Column(name = "boolean_col") 
    private Map<UserType, Boolean> userType = new HashMap<>();