これらの手順を実行しているときにorg.hibernate.NonUniqueObjectExceptionが発生します。
session.beginTransaction();
TransactionEntry te = (TransactionEntry)session.get(TransactionEntry.class, primaryKey);
session.getTransaction().commit();
.
.
.
session.beginTransaction();
session.saveOrUpdate(te.getAccount());
session.delete(te);
session.delete(te.getTransaction());
session.getTransaction().commit();
私のモデルのスナップショットは次のとおりです。
TransactionEntryクラス
@Entity
public class TransactionEntry {
@Id
@GeneratedValue
private long txnEntryId;
@ManyToOne
@JoinColumn(name = "account")
private Account account;
@ManyToOne
@JoinColumn(name = "txnId")
private TransactionTable transaction;
}
アカウントクラス
@Entity
public class Account {
@Id
@GeneratedValue
private long accountId;
}
TransactionTableクラス
@Entity
public class TransactionTable {
@Id
@GeneratedValue
private long txnId;
@OneToMany(targetEntity = TransactionEntry.class, fetch = FetchType.LAZY,
mappedBy = "transaction", cascade = CascadeType.ALL)
private List<TransactionEntry> transactionEntries;
}
次の例外が発生します。
org.hibernate.NonUniqueObjectException: a different object with the same
identifier value was already associated with the
session: [com.pratikabu.pem.model.Account#1]
ステートメントを削除すると session.delete(te.getTransaction());
、コードは正常に機能するか、上記の例外がスローされます。足りないものはありますか?