Saya memiliki model objek JPA-persisten yang berisi hubungan banyak-ke-satu: Accountmemiliki banyak Transactions. A Transactionmemiliki satu Account.
Berikut cuplikan kode:
@Entity
public class Transaction {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne(cascade = {CascadeType.ALL},fetch= FetchType.EAGER)
private Account fromAccount;
....
@Entity
public class Account {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToMany(cascade = {CascadeType.ALL},fetch= FetchType.EAGER, mappedBy = "fromAccount")
private Set<Transaction> transactions;
Saya dapat membuat Accountobjek, menambahkan transaksi, dan bertahan Accountobjek dengan benar. Tetapi, ketika saya membuat transaksi, menggunakan Akun yang sudah ada yang sudah ada , dan bertahan dalam Transaksi , saya mendapatkan pengecualian:
Disebabkan oleh: org.hibernate.PersistentObjectException: entitas terpisah dilewatkan untuk bertahan: com.paulsanwald.Akun di org.hibernate.event.internal.DefaultPersistEventListener.onPersist (DefaultPersistEventListener.java:141)
Jadi, saya bisa bertahan Accountyang mengandung transaksi, tetapi bukan Transaksi yang memiliki Account. Saya pikir ini karena Accountmungkin tidak dilampirkan, tetapi kode ini masih memberi saya pengecualian yang sama:
if (account.getId()!=null) {
account = entityManager.merge(account);
}
Transaction transaction = new Transaction(account,"other stuff");
// the below fails with a "detached entity" message. why?
entityManager.persist(transaction);
Bagaimana saya bisa menyimpan dengan benar Transaction, yang terkait dengan objek yang sudah ada Account?