जेपीए थोक आवेषण के बारे में कई विषयों को पढ़ने के बाद मैंने बनाया है, मेरे पास 2 लगातार ऑब्जेक्ट उपयोगकर्ता और साइट है। एक उपयोगकर्ता के पास कई साइट हो सकती है, इसलिए हमारे पास यहां कई संबंध हैं। मान लीजिए कि मैं उपयोगकर्ता बनाना चाहता हूं और उपयोगकर्ता खाते में कई साइटें बनाना/लिंक करना चाहता हूं। यहां साइट ऑब्जेक्ट्स के लिए थोक डालने का उपयोग करने के इच्छुक होने पर कोड कैसा दिखता है।जेपीए/हाइबरनेट थोक (बैच) डालें
User user = new User("John Doe");
user.getSites().add(new Site("google.com", user));
user.getSites().add(new Site("yahoo.com", user));
EntityTransaction tx = entityManager.getTransaction();
tx.begin();
entityManager.persist(user);
tx.commit();
लेकिन जब मैं इस कोड को चलाने मैं एसक्यूएल उत्पादन निम्न देखें (मैं JPA कार्यान्वयन प्रदाता के रूप में हाइबरनेट उपयोग कर रहा हूँ):
Hibernate: insert into User (id, name) values (null, ?)
Hibernate: call identity()
Hibernate: insert into Site (id, url, user_id) values (null, ?, ?)
Hibernate: call identity()
Hibernate: insert into Site (id, url, user_id) values (null, ?, ?)
Hibernate: call identity()
तो, मैं इसका मतलब है 'असली' थोक काम करता है नहीं या मैं डालने मैं उलझन में हूं?
इस उदाहरण प्रोजेक्ट के लिए source code है, यह मेवेन प्रोजेक्ट है ताकि आप केवल आउटपुट जांचने के लिए एमवीएन इंस्टॉल डाउनलोड और चला सकें।
UPDATED:
डीबग: ऑर्ग
User user = new User("John Doe");
user.getSites().add(new Site(1, "google.com", user));
user.getSites().add(new Site(2, "yahoo.com", user));
entityManager.setFlushMode(FlushModeType.COMMIT);
EntityTransaction tx = entityManager.getTransaction();
tx.begin();
entityManager.persist(user);
tx.commit();
अब मैं डिबग आउटपुट में निम्न पंक्ति है:
के बाद केन लियू कृपया सलाह देने के लिए, मैं विकलांग साइट ऑब्जेक्ट id ऑटो पीढ़ी है। hibernate.jdbc.AbstractBatcher - बैच आकार निष्पादित करना: 2
यह काम करता है!
ओह, यह समझ में आता है! धन्यवाद – abovesun
मैंने प्रश्न अपडेट किया है, क्या आप इसे देख सकते हैं, धन्यवाद – abovesun
अब आप अपनी चाबियाँ कैसे बना रहे हैं? आपको यह सुनिश्चित करना होगा कि आपकी चाबियाँ अनूठी हैं। –