मैं अपने जेपीए मॉडल में निम्नलिखित वर्गों (टिककर खेल, setters, और अप्रासंगिक क्षेत्रों छोड़े गए) हैजेपीए समग्र प्राथमिक कुंजी
@Entity @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Currency {
@Id
private Integer ix;
}
@Entity @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Product {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
}
मैं एक वर्ग Price
, ऐसी है कि परिभाषित करने की जरूरत है जब DDL is generated from the classes, प्राथमिक संबंधित तालिका की कुंजी Product
और Currency
के लिए कुंजी से बना है।
@Entity @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@IdClass(PricePK.class)
public class Price {
@Id @ManyToOne(optional = false)
private Product product;
@Id
@ManyToOne(optional = false)
private Currency currency;
}
@Embeddable
public class PricePK implements Serializable {
Integer product;
Integer currency;
}
लेकिन इस PRICE
तालिका के लिए निम्नलिखित उत्पन्न करता है: मैं निम्नलिखित की कोशिश की है
create table PRICE (
currency_id int null,
product_id int null,
primary key (currency_id, product_id)
);
सूचना है कि दोनों currency_id
और product_id
व्यर्थ कर रहे हैं, जो निम्न त्रुटि का कारण बनता है जब मैं लोड करने का प्रयास एसक्यूएल सर्वर में DDL
'मूल्य'
०१२३५१६४१०६ तालिका में व्यर्थ स्तम्भ पर प्राथमिक कुंजी बाधा को परिभाषित नहीं किया जा सकता
मुझे समझ नहीं आता क्यों इन व्यर्थ कर रहे हैं, क्योंकि डोमेन मॉडल में वे एनोटेट @ManyToOne(optional = false)
DDL org.hibernate.dialect.SQLServerDialect
एसक्यूएल बोली का उपयोग कर उत्पन्न होता है।
मैं अपने सुझाव की कोशिश की है, लेकिन यह कोई फर्क नहीं था –
आप उपयोग कर की कोशिश करना चाहेंगे:
के बाद कैसे आप
@EmbeddedId
का उपयोग आवश्यक परिणाम प्राप्त करने के सकता है '@ एम्बेडेड आईडी' विधि? –यह दुर्भाग्य से काम नहीं करता था –