2015-01-03 56 views
0

一個HashMap我有這樣的屬性的對象:POJO在Hibernate中,

@Entity 
@Table (name="person") 
class Person { 
    @Id 
    @SequenceGenerator(name="pk_sequence",sequenceName="user_id_seq") 
    @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="pk_sequence") 
    @Column(name="id", unique=true, nullable=false) 
    private int id; 
    @Column(name="age") 
    int age; 
    @Column(name="email") 
    String email; 
} 

現在棘手的問題。我想要一個地圖添加到這個對象。這個想法是,地圖的屬性沒有在表格中定義,但動態分配。它們被存儲在一張具有相同人員ID的表格中,所以我可以將它們鏈接起來......問題是如何將它映射到Hibernate中?我想過使用繼承,但我不知道這是要走的路......甚至我怎麼用地圖來做到這一點。

回答

2

我看不到繼承與您的問題有關。所有你需要做的就是將地圖作爲元素集合映射(!):

@ElementCollection 
private Map<String, String> properties = new HashMap<>(); 

如果您想自定義映射(選擇表名,該鍵的列名,對列名值,外鍵的列名指向擁有人),然後使用相應的註釋:

@ElementCollection 
@CollectionTable(name = "PERSON_PROPERTY") 
@MapKeyColumn(name = "NAME") 
@Column(name = "VALUE") 
@JoinColumn(name = "PERSON_ID") 
private Map<String, String> properties = new HashMap<>(); 
相關問題