12
我在使用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的实例并尝试访问B的集合时,它会抛出LazyInitializationError,并显示消息“非法访问加载集合”。
我在哪里错了? :)任何人都可以指出我使用连接表的双向关联的例子。在所有权保留给A类的地方,我已经通过hibernate.org的文档进行了搜索,但我似乎找不到它。
-Daniel
为什么在派生实体(B)中使用不同的连接表? – Perception 2012-02-20 12:04:07
对不起,我更新了这个问题。原因是我修改了这个例子的实际的两个类(基本上把它们重命名为A和B)) – JustDanyul 2012-02-20 12:11:21
好的。请将您遇到的错误添加到问题中。 – Perception 2012-02-20 12:20:26