为了账号安全,请及时绑定邮箱和手机立即绑定

在JPA中生成的表中的顺序错误

在JPA中生成的表中的顺序错误

MMMHUHU 2019-11-02 10:59:48
这(应该)是一件很简单的事情,但是我很努力。我希望这样生成一个表: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之间发生了变化。


我还发现,模式自动生成会按字母顺序为复合主键创建列,这似乎就像您的问题。该票证涉及主键的顺序更改,这会对索引性能产生负面影响。


除了解决这些问题以外,没有其他解决方法,只能以正确的顺序命名列(不,我不是在开玩笑)。


查看完整回答
反对 回复 2019-11-02
  • 2 回答
  • 0 关注
  • 599 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信