У меня возникли некоторые проблемы при получении двунаправленной ассоциации один-ко-многим, работающей с 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 и пытаюсь получить доступ к набору B, он выдает LazyInitializationError с сообщением «незаконный доступ к загрузке коллекции».
Где я здесь не так? :) Кто-нибудь может указать мне на пример двунаправленной ассоциации, которая использует таблицу соединений. А там, где права собственности принадлежат классу А, я искал документацию на hibernate.org, но, похоже, не могу ее найти.
-Daniel