Die Kombination von @OneToMany (mappedBy = "...") und @OrderColumn wird von Hibernate nicht unterstützt. Diese JIRA Ausgabe verfolgt eine Anfrage eine offensichtliche Fehlermeldung zu werfen, wenn diese ungültige Kombination verwendet wird: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5390
Ich denke, dass dies nicht in erster Linie unterstützt wird, weil es ein ungeradees Beziehungsmuster ist. Die obigen Anmerkungen zeigen an, dass die "Eins" -Seite der Beziehung bestimmt, wie die Beziehung zur Datenbank geleert wird, aber die Reihenfolge/Position ist nur auf der "Viele" -Seite verfügbar, indem die Liste untersucht wird. Es macht mehr Sinn für die "viele" Seite, die Beziehung zu besitzen, da diese Seite sowohl die Mitgliedschaft als auch die Anordnung der Elemente kennt.
Die Hibernate Annotations Dokumente beschreiben diese Situation im Detail:
http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-hibspec-collection-extratype-indexbidir
Die Abhilfe ist das „mappedBy“ Attribut zu entfernen, die der Verband die Standard Join-Tabelle Strategie führen wird anstelle eines verwenden, Spalte auf der Zieltabelle. Sie können den Namen der Join-Tabelle mit der Annotation @JoinTable angeben.
Der Nettoeffekt dieser Änderung ist, dass die "viele" Seite der Beziehung jetzt bestimmt, wie die Beziehung beibehalten wird. Ihr Java-Code muss sicherstellen, dass die Liste korrekt aktualisiert wird, da Hibernate beim Löschen der Entitäten jetzt die "Eins" -Seite ignoriert.
Wenn Sie immer noch die „eine“ Seite zugänglich in Java haben wollen, wo es sich mit
@ManyToOne
@JoinColumn(name="...", insertable=false, updatable=false, nullable=false)
Können Sie zeigen, wie Sie neu zu ordnen Ihre Liste und speichern zurück zur Datenbank ??? –
Ich habe versucht, neue ArrayList und parent.setChildrenCollection (newList) Ich habe versucht Collections.sort auf abgerufene Liste. Ich habe auch versucht, null Elemente aus der Sammlung zu entfernen. Nichts ist passiert. Andere Änderungen in Eltern wurden in der Datenbank gespeichert, aber nichts passierte mit der Liste. –
ist nicht Hibernate 3.5 für JPA 1.0 und @OrderColumn ist JPA 2.0 ?! –