IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Hibernate : MySQLIntegrityConstraintViolationException: Duplicate entry '0' for key 'PRIMARY'


Sujet :

Hibernate Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2010
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 48
    Points : 36
    Points
    36
    Par défaut Hibernate : MySQLIntegrityConstraintViolationException: Duplicate entry '0' for key 'PRIMARY'
    Bonjour,

    je développe une application J2ee et j'utilise Hibernate 3.6

    J'ai un souci pour l'ajout d'un joueur à la base de données.

    voici le sql de ma table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CREATE TABLE IF NOT EXISTS `joueurs` (
      `id` int(11) NOT NULL,
      `nom` varchar(100) NOT NULL,
      `prenom` varchar(100) NOT NULL,
      `age` int(3) NOT NULL,
      `taille` int(3) NOT NULL,
      `poids` int(3) NOT NULL,
      `poste` varchar(100) NOT NULL,
      `club` int(11) NOT NULL,
      PRIMARY KEY (`id`),
      KEY `club` (`club`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    (remplie ensuite par un script sql)


    voici ma fonction ajouterJoueur dans le dao pour l'ajout d'un joueur à la base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void AjouterJoueur(Joueur monJoueur) {
    		// Récupération d'une session Hibernate
    		Session s = HibernateSessionFactory.getSession();
    		// Début de la transaction
    		Transaction t = s.beginTransaction();
    		s.save(monJoueur);
    		t.commit();
    		s.close();
    	}
    et ensuite ma classe joueur (qui possède une relation many-to-one sur la classe club) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    @Entity
    @Table(name = "joueurs")
    public class Joueur implements Serializable {
     
    	/**
             * serialVersionUID
             */
    	private static final long serialVersionUID = 3148568044929607587L;
    	/**
             * int id
             */
    	@Id
    	@GeneratedValue(strategy=GenerationType.AUTO)
    	@Column(name = "id")
    	private int id;
    	/**
             * String nom
             */
    	@Column(name = "nom")
    	private String nom;
    	/**
             * String prenom
             */
    	@Column(name = "prenom")
    	private String prenom;
    	/**
             * int age
             */
    	@Column(name = "age")
    	private int age;
    	/**
             * String poste
             */
    	@Column(name = "poste")
    	private String poste;
    	/**
             * int poids
             */
    	@Column(name = "poids")
    	private int poids;
    	/**
             * int taille
             */
    	@Column(name = "taille")
    	private int taille;
    	/**
             * String club
             */
    	@ManyToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE }, targetEntity = Club.class)
    	@JoinColumn(name = "club")
    	private Club club;
     
    [...]
    Et enfin l'exception problématique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '0' for key 'PRIMARY'
    	sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    	sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    	sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    	java.lang.reflect.Constructor.newInstance(Unknown Source)
    	com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    	com.mysql.jdbc.Util.getInstance(Util.java:386)
    	com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1039)
    	com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
    	com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
    	com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
    	com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
    	com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
    	com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
    	com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2427)
    	com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1980)
    	com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1451)
    	org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
    	org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
    	org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:268)
    	org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:184)
    	org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
    	org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
    	org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
    	org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383)
    	org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:133)
    	org.esaip.composition.dao.JoueurDao.AjouterJoueur(JoueurDao.java:108)
    	org.esaip.composition.metier.JoueurMetier.AjouterJoueur(JoueurMetier.java:69)
    	org.esaip.composition.struts.AjoutJoueur.execute(AjoutJoueur.java:80)
    	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	java.lang.reflect.Method.invoke(Unknown Source)
    	com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
    	com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
    	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
    	com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
    	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    	com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
    	org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    	com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
    	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    	com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
    	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    	com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
    	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    	com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
    	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    	org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
    	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    	org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
    	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    	org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
    	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    	com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
    	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    	com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
    	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    	org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:270)
    	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    	com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
    	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    	com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
    	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    	com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
    	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    	org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    	com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
    	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    	com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
    	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    	org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
    	org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:498)
    	org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434)
    J'ai recherché une solution sur internet et notamment sur ces forums mais à chaque solution proposée, je n'arrive toujours pas a le faire marcher.

    Je comprends bien que vu que je ne spécifie pas d'id, il essaye de l'insérer à 0 mais l'entrée 0 existe déja dans la base...

    Faut-il que je récupère l'id max déja créé et que je l'incrémente avant d'ajouter un joueur a la base ou hibernate est-il capable de faire automatiquement l'incrémentation sans que je m'en occupe ?

    un peu d'aide serait pas de refus

  2. #2
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Bonjour, essaies de suivre ce lien
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  3. #3
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Normalement, l'annotation :@GeneratedValue(strategy=GenerationType.AUTO)devrait faire l'incrémentation pour toi.

    Il est possible qu'il y a un problème de configuration, du coup.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/03/2014, 13h42
  2. Python et MySQL -> Duplicate entry '0' for key 'PRIMARY
    Par devilsnake88 dans le forum Général Python
    Réponses: 1
    Dernier message: 13/01/2013, 22h15
  3. #1062 - Duplicate entry '1' for key 'PRIMARY'
    Par milan2 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 27/04/2012, 13h55
  4. Duplicate entry '0' for key 'PRIMARY'
    Par gege48 dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/07/2011, 09h48
  5. [phpMyAdmin] #1062 - Duplicate entry '10123' for key 'PRIMARY'
    Par cobolons dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 19/07/2010, 13h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo