मैं अपने जेपीए 2.0 कार्यान्वयन के रूप में हाइबरनेट 3.5.6 का उपयोग कर रहा हूँ। मैं एक @ElementCollection
मेरी इकाई के अंदर बनाने का प्रयास कर रहा हूँ (कई क्षेत्रों छोड़े गए):एंबेडेबल प्रकार के एलिमेंट कोलेक्शन का निर्माण कैसे करें?
@Entity
public class Buyer implements Serializable {
...
@ElementCollection
private List<ContactDetails> contacts;
...
}
मैं काफी आसानी से इस काम कर दिया है जब संग्रह एक बुनियादी प्रकार हैं, लेकिन मेरे ContactDetails
एक @Embeddable
वर्ग है:
@Embeddable
public class ContactDetails implements Serializable {
...
@Column(nullable = false)
private String streetOne;
....
}
जब मैं हाइबरनेट DDL उत्पन्न करते हैं चलाते हैं, मैं इस तरह त्रुटियों मिलती है:
INFO - Environment - Hibernate 3.5.6-Final
....
INFO - Version - Hibernate EntityManager 3.5.6-Final
....
INFO - SettingsFactory - RDBMS: PostgreSQL, version: 8.4.2
INFO - SettingsFactory - JDBC driver: PostgreSQL Native Driver, version: PostgreSQL 9.0 JDBC4 (build 801)
INFO - Dialect - Using dialect: org.hibernate.dialect.PostgreSQLDialect
....
ERROR - SchemaUpdate - Unsuccessful: create table Buyer_contacts (Buyer_id int8 not null, contacts_collection&&element_county varchar(255), contacts_collection&&element_email varchar(255), contacts_collection&&element_fax varchar(255), contacts_collection&&element_mainphone varchar(255) not null, contacts_collection&&element_mobile varchar(255), contacts_collection&&element_name varchar(255) not null, contacts_collection&&element_postcode varchar(255) not null, contacts_collection&&element_streetone varchar(255) not null, contacts_collection&&element_streettwo varchar(255), contacts_collection&&element_town varchar(255) not null)
ERROR - SchemaUpdate - ERROR: syntax error at or near "&&" Position: 73
वहाँ पीढ़ी को हाइबरनेट को मनाने के लिए एक रास्ता है संग्रह वर्ग के लिए तालिका में वैध कॉलम नाम मिटाएं? आदर्श रूप में, एक तरीका है कि का उल्लंघन नहीं करता अपने आप को प्रत्येक व्यक्ति के स्तंभ नाम निर्दिष्ट द्वारा सिद्धांत दोहराएँ न करें।
यही था, धन्यवाद। –
बग ट्रैकर के अनुसार इस हाइबरनेट 5. –
में तय हो गई है यह पता लगाने के लिए मुझे कई घंटे लग गए। त्रुटि संदेश बहुत अच्छी तरह से छुपा पूरे डीडीएल लॉग था। धन्यवाद! – Mateusz