这(应该)是一件很简单的事情,但是我很努力。我希望这样生成一个表:ID 组织编号 名称但是,当我查看数据库时,发现排序是错误的。有谁知道我该如何强制hibernate / jpa以正确的顺序生成表?desc组织;+ -------------------- + -------------- + ------ + ----- + --------- + ---------------- +| 领域 类型 空| 关键 默认值| 额外|+ -------------------- + -------------- + ------ + ----- + --------- + ---------------- +| id | bigint(20)| 否| PRI | NULL | auto_increment || 名称| varchar(255)| 否| | NULL | || 组织编号| varchar(255)| 否| UNI | NULL | |+ -------------------- + -------------- + ------ + ----- + --------- + ---------------- +这是我的实体bean的样子:@实体@NamedQuery(name =“ allOrganizations”,query =“从组织org按名称选择org”)公共类组织{ 私人Long ID; 私有的字符串organizationNumber; 私有字符串名称; 公共组织(){ } 公共组织(字符串名称){ this.name =名称; } @ID @GeneratedValue 公共长getId(){ 返回ID; } @SuppressWarnings(“未使用”) 私人无效setId(长ID){ this.id = id; } @不是空的 @Column(唯一= true,nullable = false) 公共字符串getOrganizationNumber(){ 返回organizationNumber; } 公共无效setOrganizationNumber(String OrganizationNumber){ this.organizationNumber = OrganizationNumber; } @不是空的 @Column(nullable = false) 公共字符串getName(){ 返回名称; } public void setName(String name){ this.name =名称; } @Override 公共字符串toString(){ 返回this.name +“” + this.organizationNumber; }}
2 回答

收到一只叮咚
TA贡献1821条经验 获得超4个赞
Hibernate会按字母顺序生成列。根据这篇文章,原因如下:
它经过排序以确保跨集群的确定性排序。
我们不能每次都依靠vm以相同的顺序返回方法,因此我们不得不做些事情。
显然,它以前是按照发生的顺序排列的,但是在3.2.0 GA和3.2.1 GA之间发生了变化。
我还发现,模式自动生成会按字母顺序为复合主键创建列,这似乎就像您的问题。该票证涉及主键的顺序更改,这会对索引性能产生负面影响。
除了解决这些问题以外,没有其他解决方法,只能以正确的顺序命名列(不,我不是在开玩笑)。
添加回答
举报
0/150
提交
取消