在 Hibernate 中使用 Hashmap 的 POJO

POJO with a Hashmap in 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;
}

现在是棘手的部分。我想要将地图添加到此对象。这个想法是地图具有未在 table 中定义但动态分配的属性。它们存储在具有相同个人 ID 的 table 中,因此我可以 link 它们...问题是如何在 Hibernate 中映射它?我想过使用继承,但我不确定这是要走的路……甚至不确定如何使用地图来实现。

我看不出继承与您的问题有什么关系。您需要做的就是将地图(!)映射为元素集合:

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

如果你想自定义映射(选择table名称,键的列名,值的列名,外键的列名指向拥有人) ,然后使用适当的注释:

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