次のエンティティを永続化しようとしています:
public class CommentEntity {
@Id
@ManyToOne(optional=false,cascade=CascadeType.REFRESH, targetEntity=UserEntity.class)
@JoinColumn(name="USERID",referencedColumnName="USERID")
private UserEntity userEntity;
@ManyToOne(optional=false,cascade=CascadeType.REFRESH, targetEntity=PostEntity.class)
@JoinColumn(name="POSTID",referencedColumnName="POSTID")
private PostEntity postEntity;
}
しかし、エラーが出ます:
同期中に、カスケード PERSIST とマークされていない関係を通じて新しいオブジェクトが見つかりました: entity.PostEntity@16afec。
PostEntity を永続化しようとすると、永続化されます。そのような例外はスローされません:
public class PostEntity {
@ManyToOne(optional = false, cascade = CascadeType.REFRESH, fetch = FetchType.LAZY, targetEntity = UserEntity.class)
@JoinColumn(name = "USERID", referencedColumnName = "USERID")
private UserEntity userEntity;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "postEntity", fetch = FetchType.LAZY)
private List<CommentEntity> commentEntityList;
}
なぜそれが起こっているのですか?UserEntity は次のとおりです。
public class UserEntity {
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "userEntity")
private List<PostEntity> postEntityList;
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "userEntity")
private List<CommentEntity> commentEntityList;
}
次のコードを使用して commentEntity を永続化しています。
entityManagerFactory = Persistence
.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
entityManager = entityManagerFactory.createEntityManager();
entityTransaction = entityManager.getTransaction();
entityTransaction.begin();
entityManager.persist(commentEntity);
entityTransaction.commit();
entityManager.close();
何が原因なのか理解できませんか?そして、PostEntity が同じ状況で永続化されるのはなぜですか?
私はEclipseLinkを使用しています