首页 > Java > java教程 > 为什么 JPA 生成的表中的列按字母顺序排列?

为什么 JPA 生成的表中的列按字母顺序排列?

DDD
发布: 2024-10-29 06:23:30
原创
330 人浏览过

Why Does JPA Generate Tables with Columns in Alphabetical Order?

JPA 生成的表中的表排序不正确

问题:

Java Persistence API (JPA) 似乎已生成列顺序不正确的表,特别是“名称”列出现在“组织编号”列之前,尽管所需的顺序相反。

调查:

检查表后,会发现以下顺序:

+--------------------+--------------+------+-----+---------+----------------+
| Field              | Type         | Null | Key | Default | Extra          |
+--------------------+--------------+------+-----+---------+----------------+
| id                 | bigint(20)   | NO   | PRI | NULL    | auto_increment | 
| name               | varchar(255) | NO   |     | NULL    |                | 
| organizationNumber | varchar(255) | NO   | UNI | NULL    |                | 
+--------------------+--------------+------+-----+---------+----------------+
登录后复制

原因:

JPA 默认情况下按字母顺序生成列。此排序旨在确保跨集群的确定性排序,并避免列位置不一致。

解决方法:

不幸的是,此问题没有直接的解决方法。一种解决方法是以强制所需顺序的方式手动命名列。这可以通过在列名称前添加适当的字母数字字符来实现,例如:

@Entity
@NamedQuery(name = "allOrganizations", query = "SELECT org FROM Organization org order by name")
public class Organization {

    private Long id;
    @Column(name = "a_name")
    private String name;
    @Column(name = "b_organizationNumber")
    private String organizationNumber;

    // ...
}
登录后复制

此方法将强制“id”列首先出现,然后是“name”(前缀为“a”) ),然后是“organizationNumber”(前缀为“b”)。

以上是为什么 JPA 生成的表中的列按字母顺序排列?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板