我正在使用hibernate,并编写了一些处理大量实体的业务逻辑,实体类型为“dv”“dv”与多个“st”实体有一对多连接。这些st实体是在运行时创建的。为简单起见,它们是描述“dv”实体的不同状态的条目。st实体又可以与“ks”类型的第三个实体建立多对一连接,后者表示业务逻辑运行的迭代。
所有这些都Map到我的业务逻辑中,其中db可以有几个状态(st),几个dv可以组合在一起(通过st)到一个或多个“ks”对象中。简而言之,我加载一堆dv对象,创建一个ks对象,创建几个st对象,并将它们链接到各自的dv和ks对象。如果业务逻辑再次运行,它可能会加载相同的dv,但会创建一个新的ks,因此dv可以有多个ks。
现在我已经解释了这种情况,下面是我的问题:在我的业务逻辑结束时,我保存了我的db实体,并尝试将树上的所有更改从dv到st再到ks级联。但是,我希望每次运行业务逻辑时都有一个ks(因为它基本上是同一个对象,至少在java端是这样)。但是,当我为每个st对象持久化时,它会插入一个新的ks,而不是将其合并到现有的ks之上。
以下是相关声明:
数字视频:
@Enity
@Table(name = "DV")
public class DV{
@OneToMany(mappedBy=ST_.DV, cascade={CascadeType.All})
@Column(name = "ST_ID"
private final List<ST> st=new ArrayList<>();
}
st公司:
@Entity
@Table(name= "ST")
public class ST{
@ManyToOne(cascade = {CascadeType.ALL})
@JoinColumn(name = "DV_ID")
private DV dv;
@ManyToOne(cascade = {CascadeType.All})
@JoinColumn(name = "KS_ID")
private KS ks;
}
堪萨斯州:
@Entity
@Table(name = "KS")
public class KS extends{
@OneToMany(mappedBy = ST_.KS)
private final Set<ST> sts= new HashSet<>();
}
谢谢你的帮助!
暂无答案!
目前还没有任何答案,快来回答吧!