gpt4 book ai didi

java - 如何持久化 JPA map @OneToMany

转载 作者:行者123 更新时间:2023-12-01 12:22:44 25 4
gpt4 key购买 nike

我有一个包含 map 的实体类。该 map 引用了 Child 类型的排名实体。

@Entity
public class Parent implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@OneToMany
@JoinTable
private Map<String, Child> ranking;
}

@Entity
public class Child implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
}

我将对象放入 map 中,如下所示:

ranking.put(1, childA);
ranking.put(2, childB);
ranking.put(3, childA);

Child 类不引用 Parent。 map 键是我想要保留的排名属性。我不希望排名属性成为 Child 类的一部分。我想要实现一个连接表(parent_child),其中的列如下所示:

|-------------| |----------| |---------------|
| parent | | child | | parent_child |
|-------------| |----------| |---------------|
| id | | id | | parent_id |
| ... | | ... | | child_id |
| | | | | ranking | <-- missing
|-------------| |----------| |---------------|

实际上,我没有得到排名列。我缺少什么?这可能吗?

最佳答案

正如上面所暗示的,您需要创建一个额外的实体,例如关系。然后您可以将其映射为 Map,如下所示:

@Entity
public class Parent implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;

@OneToMany(mappedBy ="parent")
@JoinColumn(name = "parent_id")
@MapKeyColumn(name = "ranking")
private Map<String, Relationship> ranking;
}

关于java - 如何持久化 JPA map @OneToMany,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26557017/

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