JPA和数据库中列的顺序
我使用Eclipselink作为持久性提供者。有没有办法指定列在数据库中的显示顺序?数据库中的列顺序与“我的实体”中的属性顺序不匹配。据我所知,hibernate按字母顺序排列列,但我找不到Eclipselink的任何规范。Eclipselink根据映射的权重对映射及其列进行排序。通常不会设置权重,只是为了确保BAIC映射是第一个,关系映射是第二个 如果需要,可以使用描述符编辑器设置映射的权重。您还可以将描述符设置为不按权重排序映射,以便使用指定的顺序(setShouldOrderMappings(false))JPA和数据库中列的顺序,jpa,jakarta-ee,Jpa,Jakarta Ee,我使用Eclipselink作为持久性提供者。有没有办法指定列在数据库中的显示顺序?数据库中的列顺序与“我的实体”中的属性顺序不匹配。据我所知,hibernate按字母顺序排列列,但我找不到Eclipselink的任何规范。Eclipselink根据映射的权重对映射及其列进行排序。通常不会设置权重,只是为了确保BAIC映射是第一个,关系映射是第二个 如果需要,可以使用描述符编辑器设置映射的权重。您还可以将描述符设置为不按权重排序映射,以便使用指定的顺序(setShouldOrderMapping
在2.2开发中,最近对映射的权重进行了一些更改,现在映射在相同的权重级别内按名称排序。回答正确,但不确定
setShouldOrderMappings(false)
是否达到了预期效果。毫无疑问,没有办法获得源代码文件中指定的顺序,而实际上这正是您想要的。因此,您需要像代码示例中那样显式指定权重。有关如何使用自定义注释执行此操作的完整示例,请参阅。作为复合PK一部分的列不能使用此处所述的“setWeight”方法设置其顺序。相反,您必须为这些列添加EclipseLink@PrimaryKey
注释(您将感兴趣的是控制PK索引中列的顺序,而不仅仅是这些列在表中的列出方式)。对于所有其他列,这里描述的方法都可以正常工作。在EclipseLink 2.6上测试。
public void MyCustomizer implements DescriptorCustomizer {
public void customize(ClassDescriptor descriptor) {
descriptor.getMappingForAttributeName("name").setWeight(2);
}
}