在jpa生成的表格中错误地排序
这(应该)是一件相当简单的事情,但我正在挣扎。
我想要这样生成一个表格:
id organizationNumber name
但是,当我查看数据库时,发现排序错误。 有谁知道我可以如何强迫hibernate / jpa以正确的顺序生成表格吗?
desc Organization; +--------------------+--------------+------+-----+---------+----------------+ | 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 | | +--------------------+--------------+------+-----+---------+----------------+
这是我的实体bean的外观:
@Entity @NamedQuery(name = "allOrganizations", query = "SELECT org FROM Organization org order by name") public class Organization { private Long id; private String organizationNumber; private String name; public Organization() { } public Organization(String name) { this.name = name; } @Id @GeneratedValue public Long getId() { return id; } @SuppressWarnings("unused") private void setId(Long id) { this.id = id; } @NotEmpty @Column(unique=true, nullable=false) public String getOrganizationNumber() { return organizationNumber; } public void setOrganizationNumber(String organizationNumber) { this.organizationNumber = organizationNumber; } @NotEmpty @Column(nullable=false) public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return this.name + " " + this.organizationNumber; } }
Hibernate 按字母顺序生成列。 根据这篇文章,原因如下:
它被分类以确保跨集群的确定性排序。
我们不能依靠vm每次都以相同的顺序返回方法,所以我们不得不做一些事情。
显然它曾经是按照发生的顺序,但是在3.2.0 GA和3.2.1 GA之间发生了变化。
我还发现模式自动生成按字母顺序为复合主键创建列,这似乎就像您的问题。 这张票是关于主键变化的订单,并且对指数表现有负面影响。
除了以这样一种方式命名列的解决方法,它们以正确的顺序出现(不,我不是在开玩笑)之外,没有其他解决方法。
DataNucleus允许指定模式生成位置的扩展名FWIW。
链接地址: http://www.djcxy.com/p/36817.html上一篇: Wrong ordering in generated table in jpa
下一篇: log4j vs logback