Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA和数据库中列的顺序_Jpa_Jakarta Ee - Fatal编程技术网

JPA和数据库中列的顺序

JPA和数据库中列的顺序,jpa,jakarta-ee,Jpa,Jakarta Ee,我使用Eclipselink作为持久性提供者。有没有办法指定列在数据库中的显示顺序?数据库中的列顺序与“我的实体”中的属性顺序不匹配。据我所知,hibernate按字母顺序排列列,但我找不到Eclipselink的任何规范。Eclipselink根据映射的权重对映射及其列进行排序。通常不会设置权重,只是为了确保BAIC映射是第一个,关系映射是第二个 如果需要,可以使用描述符编辑器设置映射的权重。您还可以将描述符设置为不按权重排序映射,以便使用指定的顺序(setShouldOrderMapping

我使用Eclipselink作为持久性提供者。有没有办法指定列在数据库中的显示顺序?数据库中的列顺序与“我的实体”中的属性顺序不匹配。据我所知,hibernate按字母顺序排列列,但我找不到Eclipselink的任何规范。

Eclipselink根据映射的权重对映射及其列进行排序。通常不会设置权重,只是为了确保BAIC映射是第一个,关系映射是第二个

如果需要,可以使用描述符编辑器设置映射的权重。您还可以将描述符设置为不按权重排序映射,以便使用指定的顺序(setShouldOrderMappings(false))


在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);
  }
}