这(应该)是一件相当简单的事情,但我正在努力。
我想要这样生成一个表:
ID
组织编号
姓名
但是,当我查看数据库时,我发现顺序是错误的。有人知道我如何强制 hibernate/jpa 以正确的顺序生成表吗?
desc组织;
+--------------------+------------+-----+-----+ ----------+----------------+
|领域 |类型 |空 |键 |默认 |额外 |
+--------------------+------------+-----+-----+ ----------+----------------+
|编号 |大整数(20) |否 |优先级 |空 |自动递增 |
|姓名 |变种(255) |否 | |空 | |
|组织编号 |变种(255) |否 |大学 |空 | |
+--------------------+------------+-----+-----+ ----------+----------------+
这是我的实体 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;
}
}
原文由 Shervin Asgari 发布,翻译遵循 CC BY-SA 4.0 许可协议
Hibernate 按字母 顺序生成列。根据 这篇文章,原因如下:
显然它曾经是按出现顺序排列的,但在 3.2.0 GA 和 3.2.1 GA 之间发生了变化。
我还发现 Schema 自动生成按字母顺序为复合主键创建列, 这似乎是你的问题。这张票是关于主键顺序的变化,它会对索引性能产生负面影响。
除了以正确的顺序出现的方式命名列的解决方法之外,没有解决这个问题的方法(不,我不是在开玩笑)。