Maison > Java > javaDidacticiel > Pourquoi JPA génère-t-il des tableaux avec des colonnes par ordre alphabétique ?

Pourquoi JPA génère-t-il des tableaux avec des colonnes par ordre alphabétique ?

DDD
Libérer: 2024-10-29 06:23:30
original
297 Les gens l'ont consulté

Why Does JPA Generate Tables with Columns in Alphabetical Order?

Ordre de table incorrect dans la table générée par JPA

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    |                | 
+--------------------+--------------+------+-----+---------+----------------+
Copier après la connexion

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;

    // ...
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal