問題:
Java Persistence API (JPA) 似乎已產生列順序不正確的表,特別是“名稱”列出現在“組織編號”列之前,儘管所需的順序相反。
調查:
檢查表後,會發現以下順序:
+--------------------+--------------+------+-----+---------+----------------+ | 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 預設會依字母順序產生列。此排序旨在確保跨集群的確定性排序,並避免列位置不一致。
解決方法:@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中文網其他相關文章!