Комбинация @OneToMany (mappedBy = "...") и @OrderColumn не поддерживается Hibernate. Эта проблема JIRA отслеживает запрос на получение более очевидного сообщения об ошибке при использовании этой недопустимой комбинации: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5390
Я думаю, что это не поддерживается главным образом потому, что это нечетный реляционный шаблон. Аннотации, приведенные выше, указывают, что «одна» сторона отношения определяет, как отношения будут очищаться от базы данных, но порядок/позиция доступны только на стороне «многих», изучая список. Для «многих» сторон имеет смысл иметь отношения, поскольку эта сторона знает как членство, так и порядок элементов.
The Hibernate Аннотации документы описывают эту ситуацию в некоторых деталях:
http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-hibspec-collection-extratype-indexbidir
Чтобы обойти эту проблему, чтобы удалить атрибут «mappedBy», что приведет к ассоциации использовать присоединиться к стратегии таблицы по умолчанию вместо столбец в целевой таблице. Вы можете указать имя таблицы соединений, используя аннотацию @JoinTable.
Чистый эффект этого изменения заключается в том, что «многие» стороны отношений теперь определяют, как сохраняется связь. В вашем Java-коде необходимо убедиться, что список обновлен правильно, потому что Hibernate теперь игнорирует «одну» сторону при очистке объектов.
Если вы все еще хотите иметь «одну» сторону, доступную в Java, сопоставьте его с
@ManyToOne
@JoinColumn(name="...", insertable=false, updatable=false, nullable=false)
Можете ли вы показать, как вы изменить порядок списка и сохранить вернуться в базу данных ??? –
Я попытался создать новый ArrayList и parent.setChildrenCollection (newList) Я пробовал Collections.sort по извлеченному списку. Я также пытался удалить ненужные элементы из коллекции. Ничего не произошло. Другие каналы в родителе были сохранены в базе данных, но ничего не произошло со списком. –
не Hibernate 3.5 для JPA 1.0, а @OrderColumn - JPA 2.0 ?! –