मेरे पास एक जेपीए-फ़ारवर्ड ऑब्जेक्ट मॉडल है जिसमें कई-से-एक संबंध हैं: Account
कई हैं Transactions
। A के 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.PersistentObjectException: अलग की गई इकाई को जारी रखने के लिए: com.paulsanwald।
इसलिए, मैं ऐसा 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
वस्तु के साथ, सही तरीके से कैसे बचा सकता हूं ?