मैं एक एक-से-एक रिश्ता है लेकिन hibernatetool शिकायत जब स्कीमा पैदा होता है। यहाँ एक उदाहरण है कि समस्या से पता चलता है:जेपीए हाइबरनेट एक-से-एक संबंध
@Entity
public class Person {
@Id
public int id;
@OneToOne
public OtherInfo otherInfo;
rest of attributes ...
}
व्यक्ति OtherInfo के साथ एक-से-एक संबंध नहीं है:
@Entity
public class OtherInfo {
@Id
@OneToOne(mappedBy="otherInfo")
public Person person;
rest of attributes ...
}
व्यक्ति OtherInfo के किनारे के मालिक है। अन्य इंफो एक स्वामित्व वाली पक्ष है इसलिए व्यक्ति व्यक्ति में विशेषता नाम "अन्य इंफो" निर्दिष्ट करने के लिए mappedBy
का उपयोग करता है।
org.hibernate.MappingException: Could not determine type for: Person, at table: OtherInfo, for columns: [org.hibernate.mapping.Column(person)]
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:292)
at org.hibernate.mapping.SimpleValue.createIdentifierGenerator(SimpleValue.java:175)
at org.hibernate.cfg.Configuration.iterateGenerators(Configuration.java:743)
at org.hibernate.cfg.Configuration.generateDropSchemaScript(Configuration.java:854)
at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:128)
...
किसी भी विचार क्यों:
मैं जब hibernatetool का उपयोग कर डेटाबेस स्कीमा उत्पन्न करने के लिए निम्न त्रुटि मिल सकता है? क्या मैं कुछ गलत कर रहा हूं या यह एक हाइबरनेट बग है?
महान जवाब, बस जोड़ने के लिए है कि आप अपने व्यक्ति वर्ग में निम्नलिखित टिप्पणी जोड़ने के लिए और साथ ही आवश्यकता हो सकती है चाहता था (मैं सही ढंग से काम कराने के लिए किया था): '@Cascade ({CascadeType.ALL, CascadeType। DELETE_ORPHAN}) ' –
धन्यवाद, इससे मेरी समस्या पर मदद मिली .. क्या आप जानते हैं कि वैसे भी केवल जेपीए एनोटेशन का उपयोग करें और हाइबरनेट से बचें? – Elton
@ एल्टन - यदि कोई तरीका है तो यह जेपीए 2.0 में होना चाहिए - हालांकि मैंने इसे नहीं देखा। – topchef