web-dev-qa-db-fra.com

org.hibernate.HibernateException: la base de données n'a renvoyé aucune valeur d'identité générée de manière native.

Je reçois cette exception d'Hibernate

atelier de construction
13: 32: 09,937 INFO SessionFactoryObjectFactory: 105 - Fabrique non liée à JNDI, aucun nom JNDI configuré
Exception dans le thread "principal" org.hibernate.HibernateException: la base de données n'a renvoyé aucune valeur d'identité générée de manière native.

Qu'est-ce que cela signifie et comment puis-je le résoudre? Merci!

21
Abdul

Je pense que cela signifie que vous essayez d'utiliser le générateur d'identifiant IDENTITY avec une colonne de table mal configurée. Il devrait s'agir d'une colonne auto_increment pour que le générateur IDENTITY fonctionne. Sinon, la base de données ne renvoie aucun identifiant généré.

40
JB Nizet

Nous devons auto_increment la colonne id de la table en utilisant la requête ci-dessous

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment
5
user4411686

Et résoudre ce problème est aussi simple que de vous assurer que la colonne de clé primaire de la table sur laquelle vous travaillez est configurée pour l'incrémentation automatique. 

3
dade

Lors de la création de la table dans la base de données, vous avez peut-être oublié de donner Autoincrement à cette colonne.

Ou

Vous avez oublié d'annoter dans la classe Java en tant que "Valeur générée"

Cela fonctionnera bien

2

Dans un tel scénario, vous n'avez pas besoin de créer la table manuellement. Il créera par défaut en utilisant hibernate . Make change ou ajoutera dans hibernate.cfg.xml >> le champ "hibernate.hbm2ddl.auto" défini sur "update".

0
Narayan Choudhary

Une autre façon de résoudre ce problème consiste à définir Auto_Increment pour la colonne ID de la table.

0
Saurabh Singhal