La combinazione di @OneToMany (mappedBy = "...") e @OrderColumn non è supportata da Hibernate. Questo problema di JIRA tiene traccia di una richiesta di un messaggio di errore più evidente quando viene utilizzata questa combinazione non valida: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5390
Penso che questo non sia supportato principalmente perché è uno strano modello relazionale. Le annotazioni precedenti indicano che il lato "uno" della relazione determina in che modo la relazione verrà scaricata nel database, ma l'ordine/posizione è disponibile solo sul lato "molti" esaminando l'elenco. Ha più senso per il "più" lato avere la relazione, dal momento che quella parte conosce sia l'appartenenza che l'ordine degli elementi.
dell'hibernate annotazioni documenti descrivono questa situazione in dettaglio:
http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-hibspec-collection-extratype-indexbidir
La soluzione è rimuovere l'attributo "mappedBy", che causerà l'associazione di utilizzare la strategia di join tabella predefinita invece di un colonna sulla tabella di destinazione. È possibile specificare il nome della tabella di join utilizzando l'annotazione @JoinTable.
L'effetto netto di questo cambiamento è che il "molti" lato della relazione determina ora come viene mantenuta la relazione. Il codice java deve garantire che l'Elenco sia aggiornato correttamente, poiché Hibernate ignorerà ora il lato "uno" durante il lavaggio delle entità.
Se si vuole ancora avere il lato "uno" accessibili in Java, la mappa con
@ManyToOne
@JoinColumn(name="...", insertable=false, updatable=false, nullable=false)
fonte
2010-08-13 20:08:17
Potete mostrare come si fa ri-ordinare la vostra lista e salvare torna al database ??? –
Ho provato a creare un nuovo ArrayList e parent.setChildrenCollection (newList) Ho provato Collections.sort nell'elenco recuperato. Ho anche provato a rimuovere oggetti nulli dalla raccolta. Non è successo niente. Altre modifiche genitoriali sono state salvate nel database, ma non è successo nulla con l'elenco. –
non è Hibernate 3.5 per JPA 1.0 e @OrderColumn è JPA 2.0 ?! –