gpt4 book ai didi

java - 连接表丢失

转载 作者:行者123 更新时间:2023-12-03 21:47:11 26 4
gpt4 key购买 nike

我有以下两个类:

@Entity
class A {
@Id
private aId;
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = "AB", joinColumns = @JoinColumn(name = "aId", referencedColumnName = "aId"), inverseJoinColumns = @JoinColumn(name = "bId", referencedColumnName = "bId"))
private Set<B> bSet;
}

@Entity
class B {
@Id
private bId;
}

我从一个数据库加载完整的对象结构,然后在第二个数据库上输入一个新事务以再次持久化该结构。然而,“AB”表是空的。这很奇怪,因为尽管我只明确坚持“A”,但坚持“B”。我检查过 A 对象是否包含 B 的非空集,所以这不是问题。

这让我得出结论,Hibernate 认为“AB”表应该存在,因为“A”和“B”都已经有了它们的主键。有没有办法解决这个问题,让 Hibernate 将连接表持久保存在第二个数据库中?

最佳答案

我猜这是因为您正在使用代理对象。也就是说,如果您使用新运算符创建 A 和 B 的实例,然后调用 persist ,将创建连接表记录。但是您使用的是从 entitymanager 获得的对象(这些是代理对象)所以你必须合并对象,这样 entitymanager 就会创建这个对象的新代理。

关于java - 连接表丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4143919/

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