ホームページ  >  記事  >  Java  >  JPA がアルファベット順の列を持つテーブルを生成するのはなぜですか?

JPA がアルファベット順の列を持つテーブルを生成するのはなぜですか?

DDD
DDDオリジナル
2024-10-29 06:23:30276ブラウズ

Why Does JPA Generate Tables with Columns in Alphabetical Order?

JPA で生成されたテーブルのテーブルの順序が正しくありません

問題:

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。