gpt4 book ai didi

java - Hibernate 中带有 Hashmap 的 POJO

转载 作者:行者123 更新时间:2023-12-02 05:06:19 25 4
gpt4 key购买 nike

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

@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;
}

现在是棘手的部分。我想要将 map 添加到该对象。这个想法是,映射的属性未在表中定义,而是动态分配的。它们存储在具有相同人员 ID 的表中,因此我可以链接它们...问题是如何在 Hibernate 中映射它?我想过使用继承,但我不确定这是正确的方法……甚至不确定如何使用 map 来做到这一点。

最佳答案

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

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

如果要自定义映射(选择表名、键的列名、值的列名、指向所属 Person 的外键的列名),则使用适当的注释:

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

关于java - Hibernate 中带有 Hashmap 的 POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27758154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com