Сочетание @OneToMany (mappedBy = "...") и @OrderColumn не поддерживается Hibernate. Эта проблема JIRA отслеживает запрос на выдачу более очевидного сообщения об ошибке при использовании этой недопустимой комбинации: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5390
Я думаю, что это не поддерживается в основном потому, что это странный реляционный паттерн. Приведенные выше аннотации указывают, что сторона «одна» отношения определяет, как связь будет сброшена в базу данных, но порядок / позиция доступны только на стороне «многие» при рассмотрении списка. Для стороны «многих» имеет больше смысла владеть отношениями, поскольку эта сторона знает как о членстве, так и о порядке элементов.
Документы Hibernate Annotations описывают эту ситуацию более подробно:
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)