我有以下两个类:
@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“表是空的。这非常奇怪,因为"B“是持久化的,尽管我只显式地持久化了"A”。我已经检查过A-objects包含B的非空集,所以这不是问题。
这给我留下了一个结论,Hibernate认为"AB"-table应该存在,因为"A“和"B”都已经有了它们的主键。有什么办法可以让Hibernate在第二个数据库中持久化连接表吗?
发布于 2012-01-06 05:34:22
我猜这是因为你正在使用代理持久化,如果你用新操作符创建A和B的实例,然后调用object.That,连接表记录将被创建,你正在使用从entitymanager获得的对象(这些是代理对象),所以你必须合并对象,entitymanager将创建这个对象的新代理。
https://stackoverflow.com/questions/4143919
复制相似问题