मुझे लगता है कि हाइबरनेट में संग्रह से हटाते समय अनाथ रिकॉर्ड हटाए जा रहे हैं। मैं, कुछ सरल गलत कर किया जाना चाहिए (इस हाइबरनेट-101 है!), लेकिन मैं यह नहीं मिल रहा ..संग्रह अद्यतन करते समय अनाथों को हटाने के लिए हाइबरनेट हटाना
निम्नलिखित को देखते हुए:
public class Book {
@ManyToOne
@NotNull
Author author;
}
public class Author
{
@OneToMany(cascade={CascadeType.ALL})
List<Book> books;
}
और निम्न अद्यतन कोड:
Author author = authorDAO.get(1);
Book book = author.getBooks().get(0);
author.getBooks().remove(0);
authorDAO.update(author);
AuthorDAO स्निपेट:
@Override
public void update(T entity) {
getSession().update(entity);
}
निम्नलिखित टेस्ट में विफल रहता है:
0,123,Author author = author.get(1);
assertEquals(0,author.getBooks().size()); // Passes
Book dbBook = bookDAO.get(book.getId())
assertNull(dbBook); // Fail! dbBook still exists!
assertFalse(author.getBooks().contains(dbBook) // Passes!
सारांश में, मैं खोजने हूँ:
- पुस्तक पुस्तकों के लेखक का संग्रह से निकाल दिया जाता है, यह अभी भी डेटाबेस
- अगर मैं
book.getAuthor().getBooks()
की जांच, किताब में मौजूद नहीं है में मौजूद है उस संग्रह
यह "लगता है" की तरह मैं सत्र निस्तब्धता या अद्यतन उचित रूप से मजबूर कर नहीं कर रहा हूँ - लेकिन मुझे यकीन है कि मैं कहाँ है कि क्या करना चाहिए नहीं कर रहा हूँ। कि नस-साथ अन्य बिंदुओं कि को प्रभावित किया जा सकता है:
- मैं एक JUnit परीक्षण
@RunWith(SpringJUnit4ClassRunner.class)
- के साथ सजाया में ऊपर प्रदर्शन कर रहा हूँ मैं मूल रूप से एक अद्यतन दिनचर्या के अंदर इस समस्या जो
@Transactional
साथ सजाया गया है हालांकि, मारा, मैंने इसे एक पुराने पुराने जुनीट परीक्षण में फिर से बनाया है।
किसी भी सलाह की सराहना की जाएगी!
संपादित करें: पहले से ही सभी प्रतिक्रियाओं के लिए धन्यवाद। इसके अलावा नीचे टिप्पणी करने के लिए, मैं माता-पिता के लिए @Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
जोड़ दिया है, तो यह अब है:
public class Author
{
@OneToMany(cascade={CascadeType.ALL})
@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
List<Book> books;
}
मैं अभी भी एक ही परिणाम की खोज कर रहा हूँ। मुझे कुछ आसान याद आना चाहिए।
मैंने इस एनोटेशन को जोड़ा है, लेकिन यह अभी भी काम नहीं कर रहा है - पहले जैसा ही परिणाम। –
क्या आप पुस्तक में लेखक संदर्भ को शून्य में भी सेट कर रहे हैं? – cletus
नहीं, मैंने सोचा था कि DELETE_OPRHAN एनोटेशन का बिंदु था? –