Неправильное упорядочение в сгенерированной таблице в 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;
}
}
Ответы
Ответ 1
Hibernate генерирует столбцы в алфавитном порядке. Согласно этот пост, причина дается как:
Он сортируется, чтобы обеспечить детерминированный упорядочение по кластерам.
Мы не можем полагаться на vm, чтобы вернуть методы в том же порядке каждый раз поэтому мы должны были что-то сделать.
По-видимому, он был в порядке появления, но это изменилось между 3.2.0 GA и 3.2.1 GA.
Я также нашел Автогенерация схемы создает столбцы в алфавитном порядке для составных первичных ключей, и это похоже на вашу проблему. Этот билет касается изменения порядка в первичных ключах и отрицательно влияет на производительность индекса.
Нет никакого исправления для этого, кроме обхода обхода столбцов таким образом, чтобы они выходили в правильном порядке (нет, я не шучу).
Ответ 2
DataNucleus позволяет расширение, определяющее позицию для генерации схемы, FWIW.