是否可以在Hibernate中使用JPA@order column而不使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)尝试在没有order列的情况下编写医疗需求记录,然后(我想,但由于失败,我还没有看到它)在事实发生后更新医嘱。
我可以理解这种简单性——实体本身不知道顺序,只有父集合知道顺序。话虽如此,如果可以的话,我希望能够使用相同的模式而无需修改。有办法解决这个问题吗?
关于这个话题我还没有找到太多的讨论,除了在一个日食虫中,日食虫做了同样的事情,显然,虽然我并不真的在乎,因为我用的是Hibernate。;)