gpt4 book ai didi

java - Hibernate 在数据库中创建重复条目

转载 作者:太空宇宙 更新时间:2023-11-04 08:48:58 25 4
gpt4 key购买 nike

我有一个类似于下面描述的数据库结构。

“宇宙”可以包含任意数量的“元素”。 “人”可能有一个“盒子”,它指的是“宇宙”中的一个或多个“元素”

Universe、Items、Person、Box 都是数据库表。 Box 就像 Person 和 Item 的连接表。

注意:我正在使用 javax persistence API 和 hibernate

现在可以在宇宙中创建并保存项目。一个人可以在该项目的框中拥有一个实体并保存该人的信息。这工作得很好。

但是我的应用程序希望在宇宙中创建一个项目,但不立即保存它。现在我指的是尝试将该项目与该人关联起来。我有一个完整的保存方法,它尝试保存事务中的所有内容。调用此方法,我在 Items 表中获得同一 Item 的两个条目,一个由 Person 引用,另一个由 Universe 引用。

有没有办法让Universe保存Item并让Person通过使用hibernate注释和JPA来引用这个Item。

欢迎任何想法。

我不擅长编辑代码。请耐心等待。

Person 类:

@Entity
@Table(name = "Person")
@Inheritance(strategy = InheritanceType.JOINED)
public class Person
{

private Integer myId;
private String myName;
private String Occupation;

/**
* Set of Items.
*/
private Set<Items> myItems = new HashSet<Items>();

@OneToMany
@JoinTable(name="Box",
joinColumns = @JoinColumn(name="person_id"),
inverseJoinColumns = @JoinColumn(name="item_id"))
@Cascade(value = {org.hibernate.annotations.CascadeType.DELETE_ORPHAN,
org.hibernate.annotations.CascadeType.ALL})

private Set<Items> getItems()
{
return myItems;
}
}

表框(连接表):

create table Box(
person_id int references Person(id) not null,
item_id int references Item(id) not null
)

项目类:

@Entity
@Table(name = "Items")
@Inheritance(strategy = InheritanceType.JOINED)

public class Items
{
/**
* Database identifier.
*/
private Integer myDbId;

...

}

表 Universe 有一对多的项目集。

最佳答案

这是一个黑暗中的大人物:使用EntityManager#merge。如果您想要更准确的答案,请向问题添加更多详细信息。

关于java - Hibernate 在数据库中创建重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3775561/

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