次のように定義されたエンティティがあるとします。
public class Member extends User implements Comparable<Member> {
@ManyToMany
@JoinTable(name = "Friends")
@Filters({ @Filter(name = "deleted") })
private Collection<Member> friends = new HashSet<Member>();
}
次のようにパラメーターが定義されていない、削除されたという名前のフィルターがあります
@FilterDef(name = "deleted", defaultCondition = "deleted = 0")
永続的なMemberオブジェクトのfriendsコレクションに新しい要素を追加しようとすると、問題が発生します。トランザクションをコミットした後、次の例外が発生します。
org.hibernate.HibernateException: cannot recreate collection while filter is enabled: [domain.entity.Member.friends#98304]
at org.hibernate.action.internal.CollectionUpdateAction.execute(CollectionUpdateAction.java:74)
at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:377)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:369)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:291)
at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:339)
at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:52)
at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1234)
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:404)
at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)
私が間違っていることは何ですか?