2013-10-05 4 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 annotaion для отображения вашей таблицы, а промежуточная таблица будет генерировать по имени user_type (как определено в аннотации). Ниже приведен образец аннотации:

@ElementCollection 
    @CollectionTable(name = "user_type") 
    @MapKeyColumn(name = "user_type_col") 
    @Column(name = "boolean_col") 
    private Map<UserType, Boolean> userType = new HashMap<>(); 
Смежные вопросы