是否可以将JPA @OrderColumn与Hibernate一起使用而不会使order列可为空或将其设置为默认值?
我有一个现有的数据库,该数据库的序列列已映射到基于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以访问相同的数据库,这最终可能会取代现有应用程序的后端,但与此同时,他们需要共享一个架构。我试图用Kotlin在等效的JPA中重现映射:
@OneToMany(fetch = LAZY, cascade = [ALL], orphanRemoval = true)
@JoinColumn(name = "applicationId")
@OrderColumn(name = "requirementIndex", nullable = false)
private var _medicalRequirements = mutableListOf<MedicalRequirement>()
作为一个整体,映射似乎可行,但是Hibernate(5.x)尝试在没有订单列的情况下编写医疗需求记录,然后(我认为,但由于故障我尚未看到)事实之后的顺序。
我可以理解这一点的简单性-实体本身并不了解订单,只有父级集合知道订单。话虽这么说,但我希望能够不修改而使用相同的架构。有什么办法解决吗?
除了一个EclipseLink错误外,我没有找到太多关于该主题的讨论-尽管我并不在乎,因为我正在使用Hibernate,因此EclipseLink显然也做同样的事情。 ;)