के साथ अमान्य SQL क्वेरी उत्पन्न करता है मेरे पास निम्न जेपीए इकाई वर्ग (उदाहरण केस) है। एक घर एक स्ट्रीट पर है। एक स्ट्रीट में कई सदन हैं।हाइबरनेट MySQL
@Entity
public class House {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public Integer id;
public String name
@ManyToOne
public Street street;
}
@Entity
public class Street {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public Integer id;
@OneToMany(mappedBy="street")
public Set<House> houses;
}
मैं पीढ़ी प्रकार पहचान करने के लिए सेट है, जो स्वत: माना जाता है कि एक नया पहचान प्रदान की है।
एक नई स्ट्रीट के साथ एक नया घर बनाते समय, मुझे पहले घर बनाना और स्ट्रीट बनाना होगा। ऐसा इसलिए है क्योंकि मेरे पास कैस्केड टाइप नहीं है, इसलिए इसे मैन्युअल रूप से किया जाना चाहिए [1]। हालांकि, जबकि एक नव निर्मित सड़क डालने:
insert into Street default values
जो MySQL पसंद नहीं करता:
Street street = new Street();
entityManager.persist(street);
हाइबरनेट/जेपीए निम्नलिखित SQL क्वेरी उत्पन्न करता है।
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'default values' at line 1
कोई विचार क्यों? मैं जेपीए (संस्करण 3.2.1.ga) के हाइबरनेट के कार्यान्वयन के साथ जावा 6, माईएसQL 5.0.67 का उपयोग कर रहा हूं।
[1] कार्रवाई पृष्ठों 318-319
धन्यवाद, आपने कड़ी मेहनत के अपने घंटों को बचाया। – Heisenberg
मैं कॉलम नाम के रूप में 'कुंजी' और 'मान' का उपयोग कर रहा था। ओह। –