আমার কাছে একটি জেপিএ-অবিচলিত অবজেক্ট মডেল রয়েছে যার মধ্যে একাধিক থেকে এক সম্পর্ক রয়েছে: একটিতে 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
অবজেক্টের সাথে যুক্ত একটিকে কীভাবে সঠিকভাবে সংরক্ষণ করতে পারি ?