আমার কাছে একটি জেপিএ-অবিচলিত অবজেক্ট মডেল রয়েছে যার মধ্যে একাধিক থেকে এক সম্পর্ক রয়েছে: একটিতে Accountঅনেকগুলি রয়েছে Transactions। ক একটি Transactionআছে Account।
কোডটির একটি স্নিপেট এখানে দেওয়া হয়েছে:
@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;
আমি একটি Accountঅবজেক্ট তৈরি করতে , এতে লেনদেন যুক্ত করতে এবং Accountসঠিকভাবে অবজেক্টটি অবিরত রাখতে সক্ষম । তবে, আমি যখন ইতিমধ্যে বিদ্যমান বিদ্যমান অ্যাকাউন্ট ব্যবহার করে এবং লেনদেন চালিয়ে যাওয়ার সময়ে লেনদেন তৈরি করি তখন আমি একটি ব্যতিক্রম পাই:
এর দ্বারা তৈরি: org.hibernate.PersistanceObjectException: বিচ্ছিন্ন সত্তা অস্তিত্ব বজায় রাখতে পেরে: com.paulsanwald.Acount at org.hibernate.event.intern.DefaultPersistEventListener.onPersist (DefaultPersistEventListener.java:141)
সুতরাং, আমি একটি জিদ সক্ষম Accountএকটি লেনদেন নয় যে যে লেনদেন রয়েছে, কিন্তু Account। আমি ভেবেছিলাম এটি Accountসম্ভবত কারণ সংযুক্ত করা হয়নি, তবে এই কোডটি এখনও আমাকে একই ব্যতিক্রম দেয়:
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);
Transactionইতিমধ্যে স্থায়ী Accountঅবজেক্টের সাথে যুক্ত একটিকে কীভাবে সঠিকভাবে সংরক্ষণ করতে পারি ?