これが私が立ち往生しているところです:
javax.servlet.ServletException:org.hibernate.LazyInitializationException:ロールのコレクションを遅延初期化できませんでした:it.trew.model.TipoCaratteristica.traduzioni、セッションまたはセッションが閉じられていません
私のエンティティコードのいくつか:
@Entity
@Table(name = "tipi_caratteristiche")
public class TipoCaratteristica implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
private String nome;
@OneToMany(cascade = CascadeType.ALL)
@JoinTable(
name = "tipi_caratteristiche_traduzioni",
joinColumns = { @JoinColumn(name = "tipo_caratteristica_id") },
inverseJoinColumns = { @JoinColumn(name = "traduzione_id") }
)
private List<Traduzione> traduzioni = new ArrayList<Traduzione>();
「Traduzione」は、文字列プロパティのペアを持つ単純なプレーンエンティティです。
「TipoCaratteristica」をIDでロードし、そのリストをタグで表示しようとする「編集」jsfページがあります。
編集されたオブジェクトをフェッチするためにejb-facadeメソッドを使用します。
public T find(Object id) {
return getEntityManager().find(entityClass, id);
}
次に、jsfバッキングBeanで:
TipoCaratteristica tc = ejbFacade.find(Long.valueOf(value));
私はその例外について何かを読みました。実際、「traduzioni」コレクションにフェッチタイプEAGERを設定すると修正されますが、修正したくありません。トランザクションですべてを実行すること、またはHibernate.initialize()を使用することについて読みましたが、その方法がわかりません。
手伝ってくれませんか。