/ / हाइबरनेट फेंक एक मूल पंक्ति को हटा या अपडेट नहीं कर सकता: एक विदेशी कुंजी बाधा विफल रहता है - जावा, mysql, हाइबरनेट

हाइबरनेट फेंकता है माता-पिता पंक्ति को हटा या अपडेट नहीं कर सकता: एक विदेशी कुंजी बाधा विफल हो जाती है - जावा, mysql, हाइबरनेट

मैं परीक्षण के लिए एक बुनियादी उदाहरण पर काम कर रहा हूँ cascade delete ऑपरेशन लेकिन मुझे अपवाद मिल रहा है।

मेरे पास संस्थाएं हैं:

Employee.java

@Entity
public class Employee {
@Id
@Column(name = "EMP_ID")
private long id;

private String name;

@OneToMany(mappedBy = "employee")
@Cascade(value = { CascadeType.REMOVE, CascadeType.SAVE_UPDATE })
private List<EmpDetails> details = new ArrayList<EmpDetails>();

}

EmpDetails.java

@Entity
public class EmpDetails {
@Id
private long id;
private int info;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "EMP_ID")
private Employee employee;
}

अब मेरे पास कर्मचारी आईडी के साथ डेटाबेस में रिकॉर्ड 10 और कर्मचारी विवरण तालिका में संबंधित रिकॉर्ड हैं।

अब जब मैं क्वेरी नीचे चलाता हूं:

    session.beginTransaction();

session.delete(new Employee(10)); // here 10 is the ID of the employee

session.getTransaction().commit();
session.close();

मैं सोच रहा था कि हाइबरनेट कर्मचारी रिकॉर्ड और संबंधित कर्मचारी विवरण रिकॉर्ड हटा देगा क्योंकि मैंने कैस्केड प्रकार को निकालने के लिए सेट किया है। लेकिन मुझे अपवाद मिल रहा है:

के कारण: com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: मूल पंक्ति को हटा या अपडेट नहीं कर सकता: एक विदेशी कुंजी बाधा विफल हो जाती है

क्या कोई मेरी मदद कर सकता है कि कैस्केड डिलीट विकल्प का परीक्षण कैसे करें?

उत्तर:

जवाब के लिए 5 № 1

रिमूव कैस्केड प्रकार मानक जेपीए के लिए है remove() ऑपरेशन। मूल Hibernate के लिए delete() ऑपरेशन, आपको एक का उपयोग करने की आवश्यकता है हाइबरनेट-मालिकाना एनोटेशन:

@Cascade(CascadeType.DELETE)