Maison > base de données > tutoriel mysql > Comment réparer l'inclusion inattendue de champs d'incrémentation automatique d'Hibernate dans les instructions MySQL INSERT ?

Comment réparer l'inclusion inattendue de champs d'incrémentation automatique d'Hibernate dans les instructions MySQL INSERT ?

Patricia Arquette
Libérer: 2024-12-06 16:25:14
original
1007 Les gens l'ont consulté

How to Fix Hibernate's Unexpected Auto-Increment Field Inclusion in MySQL INSERT Statements?

Annotation du champ d'auto-incrémentation MySQL avec les annotations JPA

Dans JPA, l'annotation @GeneratedValue est utilisée pour spécifier comment la valeur d'un objet généré automatiquement La colonne doit être générée. Pour MySQL, les colonnes à incrémentation automatique sont généralement mappées avec la stratégie GenerationType.IDENTITY. Cependant, si le SQL généré inclut le champ d'auto-incrémentation, il peut y avoir une incompatibilité de configuration.

Dans le cas donné, l'objet Opérateur possède le champ d'auto-incrémentation suivant :

@Id
@GeneratedValue
private Long id;
Copier après la connexion

Cette annotation devrait générer le SQL suivant :

insert 
into
    Operator
    (active, password, username) 
values
    (?, ?, ?)
Copier après la connexion

Cependant, le journal fourni montre que le SQL inclut l'identifiant column :

Hibernate: insert into Operator (active, password, username, id) values (?, ?, ?, ?)
Copier après la connexion

Pour résoudre ce problème, assurez-vous que les étapes suivantes sont suivies :

  1. Spécifiez un dialecte MySQL : Dans la configuration Hibernate, spécifiez un Dialecte MySQL, tel que MySQL5InnoDBDialect ou MySQL5Dialect.
  2. Vérifiez le tableau Définition : Vérifiez que la table en question a une colonne d'auto-incrémentation définie, comme dans le DDL fourni :
CREATE TABLE `operator` ( 
`id` INT(10) NOT NULL AUTO_INCREMENT,
...
Copier après la connexion
  1. Revoyez le code : Vérifiez à nouveau l'entité Operator et assurez-vous qu'elle est correctement annotée avec @GeneratedValue.
  2. Clean Build et Débogage : Effectuez une compilation propre et vérifiez le répertoire de compilation pour déceler toute anomalie. De plus, inspectez les journaux pour détecter toute activité suspecte.

Si le problème persiste, il peut être nécessaire de spécifier explicitement la stratégie de génération d'identité :

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
Copier après la connexion

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal