問題:
Java Persistence API (JPA) が生成したようですテーブルの列の順序が正しくありません。具体的には、望ましい順序が逆であるにもかかわらず、「name」列が「organizationNumber」列の前に表示されています。
調査:
テーブルを検査すると、次の順序が観察されます:
+--------------------+--------------+------+-----+---------+----------------+ | 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 | | +--------------------+--------------+------+-----+---------+----------------+
原因:
JPA はデフォルトでアルファベット順に列を生成します。この順序付けは、クラスタ間で決定的な順序付けを保証し、列の位置の不一致を回避することを目的としています。
回避策:
残念ながら、この問題に対する直接的な修正はありません。回避策の 1 つは、希望する順序になるように列に手動で名前を付けることです。これは、次のような適切な英数字を列名の前に付けることで実現できます。
@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; // ... }
この方法では、'id' 列が最初に表示され、その後に 'name' (先頭に 'a' が付きます) が続きます。 )、次に「organizationNumber」(接頭辞「b」)。
以上がJPA がアルファベット順の列を持つテーブルを生成するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。