@Entity
public class Post {
private Set<Comment> comments = new LinkedHashSet<Comment>();
@OneToMany(mappedBy = "businessunit", fetch = FetchType.LAZY, cascade = { CascadeType.ALL }, orphanRemoval = true)
public Set<Comment> getComments() {
return comments;
}
}
@Entity
public class Comment {
private Post Post;
private BUnit bUnit;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "POST_ID", referencedColumnName = "ID")
public Post getPost() {
return post;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "BU_ID", referencedColumnName = "ID")
public BUnit getBUnit() {
return bUnit;
}
}
私は子のセットを含む親クラスを持っています。私は親に保存するときに、私はコメントを追加するように追加操作が正常に動作し、子供も保存されます。JPA 1対多の更新が失敗します
更新操作では、既存のコメントと新しいコメントがあります。私は既存のコメントのmodified_byフィールドを更新し、新しいコメントは希望のフィールドを設定します。次に、すべてのコメント(新しいものと既存のもの)を追加して、すべての削除 - 孤立したエラーを取得しないようにします。
post.getComments().clear();
post.getComments().addAll(newComments);
dao.update(post);
更新は例外org.hibernate.LazyInitializationExceptionをスロー:怠惰な役割のコレクションを初期化に失敗しました:
任意のアイデアを子要素には、新規および既存の要素が含まれます、更新のために、この問題を解決する方法。
ありがとうございました。
bphilipnycが指摘してくれてありがとう、編集ミスです。 – Tabho