Аннотируйте EnumMap <K, V>, используя Hibernate Аннотации - PullRequest
3 голосов
/ 22 декабря 2010

Просто быстрый вопрос:

Я хочу использовать EnumMap в одном из моих классов сущностей.

Есть ли специальный способ аннотировать их?Что будет с ним, если я не аннотирую его явно?

Более конкретно: я хочу, чтобы Ключ сохранялся как строковые значения, а не как значения int.

cheers

Ответы [ 2 ]

5 голосов
/ 22 декабря 2010

Для этого вы можете использовать аннотацию @MapKeyEnumerated (STRING), если ключом для вашей карты является Enum: http://download.oracle.com/javaee/6/api/javax/persistence/MapKeyEnumerated.html

2 голосов
/ 12 августа 2013

Я отправляю пример для HashMap<Enum, List<Object>>

В этом случае объект является пользовательским классом, Person

@Entity
@Table(name="Tasks")
@Access(AccessType.FIELD)
public class Task implements Serializable{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id; 

@OneToMany(cascade={CascadeType.ALL,CascadeType.PERSIST})
@MapKeyEnumerated(EnumType.STRING)
private Map<Role,PersonBag> persons;

[...]
}

PersonBag:

@Entity
@Table(name="Person_Bags")
public class PersonBag implements Serializable{

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private long id;

    @ManyToMany
    @JoinColumns({
        @JoinColumn(name="PersonBag_Id",referencedColumnName="Id"),
        @JoinColumn(name="Person_Id",referencedColumnName="Id")
    })
    private List<Person> persons;
[...]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...