【发布时间】:2012-03-10 18:20:00
【问题描述】:
我在使用 JoinTables 进行双向一对多关联时遇到了一些问题。这是我得到的:
A类:
@OneToMany
@JoinTable(name="join_table",
JoinColumns={@JoinColumn(name="a_id")},
inverseJoinColumns={@JoinColumn(name="b_id")}
)
@Cascade(org.hibernate.annotations.CascadeType.ALL)
public Set<B> getBs() {
return bs;
}
B类:
@ManyToOne
@JoinTable(name="join_table",
joinColumns={@JoinColumn(name="b_id", insertable=false,updatable=false)},
inverseJoinColumns={@JoinColumn(name="a_id", insertable=false,updatable=false)})
public A getA() {
return a;
}
如果我创建了 A 和 B 的实例,请将 B 的实例添加到 A 并保存。有用。但是,当我重新加载 A 的实例并尝试访问 Bs 集时,它会引发 LazyInitializationError 并显示消息“非法访问加载集合”。
我哪里错了? :) 谁能指出一个使用连接表的双向关联示例。在所有权保留为 A 类的情况下,我搜索了 hibernate.org 上的文档,但似乎找不到。
-丹尼尔
【问题讨论】:
-
为什么在派生实体 (B) 中使用不同的连接表?
-
抱歉,我更新了问题。原因是我为示例修改了实际的两个类(基本上将它们重命名为 A 和 B :))
-
好的。请将您遇到的错误添加到问题中。
-
您的问题解决了吗?我看不到任何 cmets 或接受的答案?