Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Hibernate中使用Hashmap的POJO_Java_Hibernate_Hashmap - Fatal编程技术网

Java 在Hibernate中使用Hashmap的POJO

Java 在Hibernate中使用Hashmap的POJO,java,hibernate,hashmap,Java,Hibernate,Hashmap,我有一个具有如下属性的对象: @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=tru

我有一个具有如下属性的对象:

@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中映射这一点?我曾想过使用继承,但我不确定这是一种方式。。。甚至我该怎么用地图来做

我不明白继承与你的问题有什么关系。您只需将映射(!)映射为元素集合:

@ElementCollection
private Map<String, String> properties = new HashMap<>();
@ElementCollection
私有映射属性=新HashMap();
如果要自定义映射(选择表名、键的列名、值的列名、指向所属人员的外键的列名),请使用适当的注释:

@ElementCollection
@CollectionTable(name = "PERSON_PROPERTY")
@MapKeyColumn(name = "NAME")
@Column(name = "VALUE")
@JoinColumn(name = "PERSON_ID")
private Map<String, String> properties = new HashMap<>();
@ElementCollection
@CollectionTable(name=“PERSON\u PROPERTY”)
@MapKeyColumn(name=“name”)
@列(name=“VALUE”)
@JoinColumn(name=“PERSON\u ID”)
私有映射属性=新HashMap();