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 ?
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;
Cette annotation devrait générer le SQL suivant :
insert into Operator (active, password, username) values (?, ?, ?)
Cependant, le journal fourni montre que le SQL inclut l'identifiant column :
Hibernate: insert into Operator (active, password, username, id) values (?, ?, ?, ?)
Pour résoudre ce problème, assurez-vous que les étapes suivantes sont suivies :
CREATE TABLE `operator` ( `id` INT(10) NOT NULL AUTO_INCREMENT, ...
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;
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!