Можно ли использовать JPA @OrderColumn с Hibernate, не делая столбец порядка обнуляемым или не устанавливая его по умолчанию?
У меня есть существующая база данных со столбцом последовательности, отображенным в давно существующем Hibernate 3.6-приложение на основе не JPA, и коллекция успешно отображается следующим образом:
<list name="requirements" table="MEDICAL_REQUIREMENT" cascade="all-delete-orphan" access="field">
<key column="applicationId" not-null="true" />
<list-index column="requirementIndex" />
<one-to-many class="MedicalRequirement" />
</list>
Мы создаем API для доступа к той же базе данных, которая, вероятно, в конечном итоге заменит серверную часть существующего приложения,но в то же время они должны поделиться схемой.Я попытался воспроизвести сопоставление в эквивалентном JPA с помощью Kotlin:
@OneToMany(fetch = LAZY, cascade = [ALL], orphanRemoval = true)
@JoinColumn(name = "applicationId")
@OrderColumn(name = "requirementIndex", nullable = false)
private var _medicalRequirements = mutableListOf<MedicalRequirement>()
Кажется, что сопоставление в целом работает, но Hibernate (5.x) пытается записать запись медицинских требований без столбца заказа,затем (я полагаю, но я еще не видел его из-за сбоя) обновите порядок после факта.
Я могу понять простоту этого - сама сущность не знает о порядке, толькоРодительская коллекция знает порядок.Сказав это, я бы хотел использовать ту же схему без изменений, если смогу.Есть ли способ обойти это?
Я не нашел много дискуссий на эту тему, за исключением ошибки EclipseLink - EclipseLink, по-видимому, делает то же самое, хотя мне все равно, так как яиспользуя Hibernate.;)