Problème :
L'API de persistance Java (JPA) semble avoir généré un tableau avec un ordre de colonne incorrect, en particulier avec la colonne 'nom' apparaissant avant la colonne 'organizationNumber', alors que l'ordre souhaité est l'inverse.
Enquête :
Lors de l'inspection du tableau, l'ordre suivant est observé :
+--------------------+--------------+------+-----+---------+----------------+ | 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 | | +--------------------+--------------+------+-----+---------+----------------+
Cause :
JPA génère les colonnes par ordre alphabétique par défaut. Cet ordre est destiné à garantir un ordre déterministe entre les clusters et à éviter les incohérences dans les positions des colonnes.
Solution de contournement :
Malheureusement, il n'existe pas de solution simple à ce problème. Une solution de contournement consiste à nommer manuellement les colonnes de manière à forcer l'ordre souhaité. Ceci peut être réalisé en préfixant les noms de colonnes avec des caractères alphanumériques appropriés, tels que :
@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; // ... }
Cette approche forcera la colonne « id » à apparaître en premier, suivie de « nom » (préfixé par « a » ) puis 'organizationNumber' (préfixé par 'b').
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!