मैं कुछ फिल्में प्रबंधित करने के लिए एक हाइबरनेट/स्प्रिंग एप्लिकेशन पर काम कर रहा हूं।डेटाबेस में ऑब्जेक्ट सहेजें यदि यह पहले से मौजूद नहीं है (हाइबरनेट और स्प्रिंग)
कक्षा फिल्म में कक्षा शैली के साथ कई रिश्ते हैं। इन दोनों कक्षाओं ने जनरेटेड वैल्यू एनोटेशन का उपयोग करके आईडी उत्पन्न की है।
शैली @Cascade (CascadeType.SAVE_UPDATE) का उपयोग करके फिल्म ऑब्जेक्ट के माध्यम से सहेजी गई है, मैंने शैली के प्रकार विशेषता (जो इसका नाम है; उदाहरण के लिए "काल्पनिक" पर एक अनोखी बाधा डाल दी है।
अब मैं क्या करना चाहूंगा कि हाइबरनेट जांच करें यदि पहले से ही "काल्पनिक" प्रकार के साथ एक शैली है और यदि वहां है, तो एक नया रिकॉर्ड डालने की कोशिश करने के बजाय उस शैली की आईडी का उपयोग करें। (उत्तरार्द्ध स्पष्ट रूप से एक त्रुटि फेंक देगा)
अंततः मुझे जो चाहिए वह चुनिंदा-पहले-अपडेट की तरह कुछ है लेकिन चयन-से-सेव की तरह।
क्या हाइबरनेट में ऐसा कोई कार्य है?
कुछ कोड:
मूवी वर्ग
@Entity
public class Movie {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String name;
@Lob
private String description;
@Temporal(TemporalType.TIME)
private Date releaseDate;
@ManyToMany
@Cascade(CascadeType.SAVE_UPDATE)
private Set<Genre> genres = new HashSet<Genre>();
.... //other methods
शैली वर्ग
@Entity
public class Genre {
@Column(unique=true)
private String type;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id
....//other methods
क्या आप मूवी से अलग शैली में जेनरेट इकाई से पूछ सकते हैं कि यह पता लगाने के लिए कि क्या पहले से ही "फंतासी" शैली है?साथ ही आप यह भी देख सकते हैं कि आपके जेनर मौजूद हैं या नहीं, यह देखने के लिए कि क्या आपके जेनर मौजूद हैं – Gleeb
मैं इस बात की उम्मीद कर रहा था कि हाइबरनेट के लिए कुछ कार्यक्षमताएं थीं, लेकिन हाँ, यह भी एक अच्छा समाधान है। जैसा कि @ jordan002 ने कहा, मैं समस्या पर विचार कर रहा था। – Mike
डालें-अगर-अस्तित्व एक बहुत ही आम ऑपरेशन है ... मुझे यह दुख हुआ कि हाइबरनेट इसे प्रदान नहीं करता है, और हमें चेक के साथ हमारे कोड को अव्यवस्थित करना होगा। –