Problem:
Java Persistence API (JPA) scheint generiert worden zu sein eine Tabelle mit einer falschen Spaltenreihenfolge, insbesondere mit der Spalte „Name“, die vor der Spalte „Organisationsnummer“ erscheint, obwohl die gewünschte Reihenfolge umgekehrt ist.
Untersuchung:
Bei der Untersuchung der Tabelle wird die folgende Reihenfolge beobachtet:
+--------------------+--------------+------+-----+---------+----------------+ | 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 | | +--------------------+--------------+------+-----+---------+----------------+
Ursache:
JPA generiert Spalten standardmäßig in alphabetischer Reihenfolge. Diese Reihenfolge soll eine deterministische Reihenfolge über Cluster hinweg sicherstellen und Inkonsistenzen in den Spaltenpositionen vermeiden.
Problemumgehung:
Leider gibt es keine einfache Lösung für dieses Problem. Eine Problemumgehung besteht darin, die Spalten manuell so zu benennen, dass die gewünschte Reihenfolge erzwungen wird. Dies kann erreicht werden, indem den Spaltennamen entsprechende alphanumerische Zeichen vorangestellt werden, wie zum Beispiel:
@Entity @NamedQuery(name = "allOrganizations", query = "SELECT org FROM Organization org order by name") public class Organization { private Long id; @Column(name = "a_name") private String name; @Column(name = "b_organizationNumber") private String organizationNumber; // ... }
Dieser Ansatz erzwingt, dass die Spalte „id“ zuerst angezeigt wird, gefolgt von „name“ (mit dem Präfix „a“). ) und dann „organizationNumber“ (mit dem Präfix „b“).
Das obige ist der detaillierte Inhalt vonWarum generiert JPA Tabellen mit Spalten in alphabetischer Reihenfolge?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!