La combinación de @OneToMany (mappedBy = "...") y @OrderColumn no es compatible con Hibernate. Este problema JIRA rastrea una solicitud para arrojar un mensaje de error más obvio cuando se usa esta combinación no válida: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5390
Creo que esto no se admite principalmente porque es un patrón relacional extraño. Las anotaciones anteriores indican que el lado "uno" de la relación determina cómo se va a enjuagar la relación a la base de datos, pero el orden/posición solo está disponible en el lado "muchos" al examinar la Lista. Tiene más sentido para el lado "muchos" poseer la relación, ya que ese lado conoce tanto la membresía como el orden de los elementos.
Los documentos Anotaciones de Hibernate describen esta situación con cierto detalle:
http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-hibspec-collection-extratype-indexbidir
La solución es quitar el atributo "mappedBy", lo que hará que la asociación de usar la estrategia de unión de tablas por defecto en lugar de una columna en la tabla de destino. Puede especificar el nombre de la tabla de unión utilizando la anotación @JoinTable.
El efecto neto de este cambio es que el lado "muchos" de la relación ahora determina cómo persiste la relación. Su código de Java necesita asegurarse de que la Lista se actualice correctamente, ya que Hibernate ahora ignorará el lado "uno" al enjuagar las entidades.
Si aún desea tener el lado "uno" accesible en Java, un mapa con
@ManyToOne
@JoinColumn(name="...", insertable=false, updatable=false, nullable=false)
puedo mostrar cómo se re-ordenar su lista y guardar volver a la base de datos ??? –
He intentado crear nuevos ArrayList y parent.setChildrenCollection (newList) He intentado Collections.sort en la lista recuperada. También intenté eliminar elementos nulos de la colección. No pasó nada. Otros cambios en el padre se guardaron en la base de datos, pero no pasó nada con la lista. –
no es Hibernate 3.5 para JPA 1.0, y @OrderColumn es JPA 2.0 ?! –