के बिना हाइबरनेट, डालें या अपडेट करें मेरे पास एक उत्पाद वस्तुएं हैं जो कुछ श्रेणियों से संबंधित हैं यानी शास्त्रीय कई रिश्ते हैं।चुनिंदा
@Entity
public class Product{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long id;
String name;
Double price;
@ManyToOne(fetch = FetchType.LAZY)
Category category;
...
}
@Entity
public class Category implements Identifiable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
...
}
मैं श्रेणियों को पूर्व निर्धारित किए बिना उत्पादों को सम्मिलित और अपडेट करना चाहता हूं। इस तरह:
Product product = dao.get(productId);
Category category = dao.get(categoryId);
product.setCategory(category);
dao.update(product);
या
Product product = new Product(somename);
Category category = dao.get(categoryId);
product.setCategory(category);
dao.insert(product);
को अपडेट और बिना श्रेणी का चयन सम्मिलित करने के लिए संभव है? मैं इसके लिए एचक्यूएल या सीधा प्रश्नों का उपयोग नहीं करना चाहता हूं।
इस दृष्टिकोण के साथ समस्या यह है कि आप एक ही पहचानकर्ता के साथ लगातार इकाई का एक नया उदाहरण बना रहे हैं। यह इस समय आपके लिए काम कर सकता है क्योंकि प्रश्न में 'श्रेणी' ** वर्तमान ** सत्र से जुड़ा नहीं था; अगर यह था, तो हाइबरनेट एक अपवाद फेंक देगा। डेटा अखंडता के मामले में यह भी खतरनाक है; यदि आप 'श्रेणी' पर अपने कई से एक के लिए कैस्केडिंग निर्दिष्ट करना चाहते थे, तो उपर्युक्त कोड आपकी मूल श्रेणी को सभी रिक्त मानों (या बाधा उल्लंघन त्रुटि के साथ विफल) के साथ ओवरराइट करेगा – ChssPly76
एचएम, मुझे एक एहसास था कि मैं कर रहा हूं यहाँ कुछ बुरा है। स्पष्टीकरण के लिए धन्यवाद। – Vladimir