2015-01-03 50 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<>(); 
相关问题