Löschen OneToMany Beziehung (delete-orphan) geht nicht

navino

Aktives Mitglied
Hallo,

beim Entferner von Objekten aus einer Liste wird kein delete sondern ein update durchgeführt. Dieser geht allerdings schief
da ich das Feld PUBLISHER_ID auf NOT NULLl gesetzt habe.

Hier mein Mapping der Klasse Publisher.

@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@JoinColumn(name="PUBLISHER_ID")
@Cascade(value=org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
public Set<Book> getBooks() {
return books;
}

In der BusinessSchicht mache ich für Testzwecke folgendes:

Publisher p = publisherDao.getPublisher(new Long(19)); //Publisher laden, der hat zwei Books
Set<Book> newBooks = new HashSet<Book>(); //Neues Set anlegen
p.setBooks(newBooks);//und dem Publisher zuordnen
publisherDao.savePublisher(p); //Publisher speichern.

Dann bekomme ich folgenden Fehler:

org.springframework.dao.DataIntegrityViolationException: Could not execute JDBC batch update; SQL [update T_BOOK set isbn=?, preis=?, PUBLISHER_ID=?, title=? where id=?]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
Caused by: java.sql.BatchUpdateException: Column 'PUBLISHER_ID' cannot be null

Es wird also ein update versucht und kein delete!

Ich hoffe es kann mir jemand helfen!

Gruß
navino
 
du rufst halt kein delete auf sondern ersetzt halt die alte liste durch eine leere. muss halt knallen...würde es halt mal mit nem ordnungsgemäßen löschen der einzelnen objekte versuchen.
 

Zurück
Oben