Представьте, что у меня есть следующий класс, где все поля являются целыми числами:
@Entity
public class Bar implements Serializable {
@Id
private Integer id;
@Basic
private Integer field1;
@Basic
private Integer field2;
//Constructor & getters/setters omitted
}
Теперь я хочу иметь другой класс Foo
, который имеет HashMap, где ключи - это поля в Bar
с соответствующими значениями. Т.е. примерно так:
@Entity
public class Foo implements Serializable {
@Id
private Integer id;
@Basic
private String someString;
@Basic
private Integer someInteger;
@??
private HashMap<String, Integer> barMap;
//Constructor & getters/setters omitted
Причина, по которой это делается, заключается в том, что у меня есть базовый Enum, каждое значение Enum должно быть столбцом, а затем, после извлечения его в качестве Map, я получу легкий доступ к каждому полю, потому что я уже знаю имена свойства.
По-моему, базовые таблицы будут выглядеть примерно так:
Ссылка на изображение, так как я пока не могу вставлять.
Возможно ли что-то подобное? Какие аннотации это потребует? Ранее я пытался что-то сделать следующим образом в Foo
, но он сообщает, что атрибут One-To-One не должен использоваться в качестве карты, поэтому я, вероятно, думаю об этом неправильно.
@OneToOne(mappedBy="Bar")
@MapKey(name="Id")
private HashMap<String, Integer> barMap;