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

JPA Java Discussion :

[netbeans,vista]javax.persistence.RollbackException: Error while commiting the transa


Sujet :

JPA Java

  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut [netbeans,vista]javax.persistence.RollbackException: Error while commiting the transa
    NB: j'ai copié le post (à défaut de le déplacer) car il me semble qu'il a plus sa place dans le forum JPA que dans Hibernate.
    un modérateur peut-il supprimer l'autre post?


    bonjour

    je veux créer un programme utilisant hibernate,spring, et JPA pour gérer la paie des employés d'une crèche (programme d' un tutorial de S. Tahé).
    3 classes sont créées: employé, indemnité (des informations sur le calcul de la paie, munie d' une relation avec employé de type un à plusieurs: un enregistrement indemnité possède 0,1, ou plusieurs enregistrements employé), et cotisation (une table isolés sans relation).

    mais :

    voici les deux classes à l'origine du problème:

    employé:

    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
     
    (...)
    @Entity
    @Table(name="employes")
    public class employé implements Serializable{
     
        //doit être suivi par indemnité.Add(employé)
        public employé(String ss, String nom, String prénom, int code_postal,
                String adresse, String ville) {
            this.ss = ss;
            this.nom = nom;
            this.prénom = prénom;
            this.code_postal = code_postal;
            this.adresse = adresse;
            this.ville = ville;
        }
     
        public employé() {
        }
     
        @Id
        private String ss;
     
        //@SuppressWarnings(unused)
        @Version
        private int version;
     
        @Column(length=25,nullable=false)
        private String nom;
     
        @Column(name="prenom",length=25,nullable=false)
        private String prénom;
     
        @Column(nullable=false)
        private int code_postal;
     
        @Column(length=25,nullable=false)
        private String adresse;
     
        @Column(length=25,nullable=false)
        private String ville;
     
        @ManyToOne(fetch=FetchType.LAZY)
        @JoinColumn(name="indemnites_indice")
        private indemnité indice;
     
    (...)
    et indemnité:

    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
     
    @Entity
    @Table(name="indemnites")
    public class indemnité implements Serializable{
     
        @Id
        @GeneratedValue(strategy =GenerationType.AUTO)
        private int indice;
     
        @Version
        private int version;
     
        @Column(nullable=false)
        private Double base_heure;
     
        @Column(nullable=false)
        private Double entretien_jour;
     
        @Column(nullable=false)
        private Double repas_jour;
     
        @Column(nullable=false)
        private Double indemnité_cp;
     
        @OneToMany(mappedBy="indice",cascade={CascadeType.ALL})
        private Set<employé> employés = new HashSet<employé>();
    (...)
     
        public void Add (employé ze_employé){
            employés.add(ze_employé);
            ze_employé.setIndice(this);
     
        }
    et voici l'erreur:


    Hibernate:
    select
    cotisation0_.id as id12_,
    cotisation0_.version as version12_,
    cotisation0_.csgrds as csgrds12_,
    cotisation0_.csgd as csgd12_,
    cotisation0_.secu as secu12_,
    cotisation0_.retraite as retraite12_
    from
    cotisation cotisation0_
    Hibernate:
    select
    indemnité0_.indice as indice20_,
    indemnité0_.version as version20_,
    indemnité0_.base_heure as base3_20_,
    indemnité0_.entretien_jour as entretien4_20_,
    indemnité0_.repas_jour as repas5_20_,
    indemnité0_.indemnité_cp as indemnité6_20_
    from
    indemnites indemnité0_
    Hibernate:
    select
    employé0_.ss as ss25_,
    employé0_.version as version25_,
    employé0_.nom as nom25_,
    employé0_.prenom as prenom25_,
    employé0_.code_postal as code5_25_,
    employé0_.adresse as adresse25_,
    employé0_.ville as ville25_,
    employé0_.indemnites_indice as indemnites8_25_
    from
    employes employé0_
    Hibernate:
    insert
    into
    indemnites
    (version, base_heure, entretien_jour, repas_jour, indemnité_cp)
    values
    (?, ?, ?, ?, ?)
    Hibernate:
    insert
    into
    employes
    (version, nom, prenom, code_postal, adresse, ville, indemnites_indice, ss)
    values
    (?, ?, ?, ?, ?, ?, ?, ?)
    Hibernate:
    select
    indemnité0_.indice as indice38_,
    indemnité0_.version as version38_,
    indemnité0_.base_heure as base3_38_,
    indemnité0_.entretien_jour as entretien4_38_,
    indemnité0_.repas_jour as repas5_38_,
    indemnité0_.indemnité_cp as indemnité6_38_
    from
    indemnites indemnité0_
    where
    indemnité0_.indice=?
    Hibernate:
    insert
    into
    indemnites
    (version, base_heure, entretien_jour, repas_jour, indemnité_cp)
    values
    (?, ?, ?, ?, ?)
    Hibernate:
    insert
    into
    employes
    (version, nom, prenom, code_postal, adresse, ville, indemnites_indice, ss)
    values
    (?, ?, ?, ?, ?, ?, ?, ?)
    Hibernate:
    select
    indemnité0_.indice as indice44_,
    indemnité0_.version as version44_,
    indemnité0_.base_heure as base3_44_,
    indemnité0_.entretien_jour as entretien4_44_,
    indemnité0_.repas_jour as repas5_44_,
    indemnité0_.indemnité_cp as indemnité6_44_
    from
    indemnites indemnité0_
    where
    indemnité0_.indice=?
    Hibernate:
    insert
    into
    employes
    (version, nom, prenom, code_postal, adresse, ville, indemnites_indice, ss)
    values
    (?, ?, ?, ?, ?, ?, ?, ?)
    javax.persistence.RollbackException: Error while commiting the transaction
    FAILED: initDB
    intro_j2ee.exception.PamException: Erreur dans dao/employé_dao/create - opération persist
    at intro_j2ee.dao.employé_dao.create(employé_dao.java:45)
    at dao.InitDB.initDB(InitDB.java:64)
    le fichier en question, initDB est le fichier de tests:

    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
     
    public class InitDB {
     
        //@PersistenceContext
        //private EntityManager em;
        private IEmployéDao employeDao = null;
        private ICotisationDao cotisationDao = null;
        private IIndemnitéDao indemniteDao = null;
     
        @BeforeClass
        public void init() {
            // configuration de l'application
            ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-config-dao.xml");
            // couches dao
            employeDao = (IEmployéDao) ctx.getBean("employéDao");
            cotisationDao = (ICotisationDao) ctx.getBean("cotisationDao");
            indemniteDao = (IIndemnitéDao) ctx.getBean("indemnitéDao");
        }
     
        @Test
        public void initDB() {
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("intro_J2EEPU");
            EntityManager em = emf.createEntityManager();
            // on remplit la base
            indemnité une_ind = new indemnité(0, 0, 2.38, 1.03, 15.0, 5.0);
            indemnité deux_ind = new indemnité(0, 0, 1.43, 2.0, 10.0, 7.0);
     
     
            employé un_employé = new employé("174075746304472", "TRICHE", "Olivier", 57050, "4 rue de Gorze", "metz");
            employé deux_employé=new employé ("075075721252403", "ROY", "Betty", 57412, "3 rue des roses", "Clouange");
     
            une_ind.Add(un_employé);
            deux_ind.Add(deux_employé);
     
            indemniteDao.create(une_ind);
            indemniteDao.create(deux_ind);
     
            employeDao.create(un_employé);
            employeDao.create(deux_employé);
     
            cotisation une_cot = new cotisation(1.3, 2.7, 2.1, 1.0);
            cotisationDao.create(une_cot);
     
     
            // on affiche le contenu de la base
            System.out.println("*** AFFICHAGE DU CONTENU DE JPA2 ***");
            System.out.println("*** TABLE indemnité              ***");
            for (Object ind : em.createQuery("select i from indemnité i").getResultList()) {
                System.out.println(ind);
            }
            System.out.println("*** TABLE cotisation              ***");
            for (Object cot : em.createQuery("select c from cotisation c").getResultList()) {
                System.out.println(cot);
            }
            System.out.println("*** TABLE employé              ***");
            for (Object emp : em.createQuery("select e from employé e").getResultList()) {
                System.out.println(emp);
            }
        }
    enfin, voici les fichiers persistence.xml:

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
     
      <persistence-unit name="intro_J2EEPU" transaction-type="RESOURCE_LOCAL">
     <!-- provider -->
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
     <class>intro_j2ee.jpa.cotisation</class>
        <class>intro_j2ee.jpa.employé</class>
        <class>intro_j2ee.jpa.indemnité</class>
     
     
     <properties>
     <!-- Classes persistantes -->
     <property name="hibernate.archive.autodetection" value="class, hbm"/>
     
     <property name="hibernate.show_sql" value="true"/>
     <property name="hibernate.format_sql" value="true"/>
     <property name="use_sql_comments" value="true"/>
     
     <!-- connexion JDBC -->
     <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
     <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/jpa2"/>
     <property name="hibernate.connection.username" value="jpa2"/>
     <property name="hibernate.connection.password" value="jpa2"/>
     <!-- création automatique du schéma -->
     <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
     <!-- Dialecte -->
     <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
     <!-- propriétés DataSource c3p0 -->
     <property name="hibernate.c3p0.min_size" value="5"/>
     <property name="hibernate.c3p0.max_size" value="20"/>
     <property name="hibernate.c3p0.timeout" value="300"/>
     <property name="hibernate.c3p0.max_statements" value="50"/>
     <property name="hibernate.c3p0.idle_test_period" value="3000"/>
     </properties>
     </persistence-unit>
    </persistence>

    et spring-config-dao.xml:

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
     <beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:tx="http://www.springframework.org/schema/tx"
     xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
     
     <!-- couches applicatives 
     <bean id="dao" class="dao.Dao" />
     <bean id="service" class="service.Service">
        <property name="dao" ref="dao" />
     </bean>-->
     
     <bean id="employéDao" class="intro_j2ee.dao.employé_dao" />
     <bean id="cotisationDao" class="intro_j2ee.dao.cotisation_dao" />
     <bean id="indemnitéDao" class="intro_j2ee.dao.indemnité_dao" />
     
     
     
     <!-- couche de persistance JPA -->
     <bean id="entityManagerFactory"
     class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
     <property name="dataSource" ref="dataSource" />
     <property name="jpaVendorAdapter">
     <bean
     class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
     <!--
     <property name="showSql" value="true" />
     -->
     <property name="databasePlatform"
     value="org.hibernate.dialect.MySQL5InnoDBDialect" />
     <property name="generateDdl" value="true" />
     </bean>
     </property>
     <property name="loadTimeWeaver">
     <bean
     class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
     </property>
     </bean>
     
     <!-- la source de donnéees DBCP -->
     <bean id="dataSource"
     class="org.apache.commons.dbcp.BasicDataSource"
     destroy-method="close">
     <property name="driverClassName" value="com.mysql.jdbc.Driver" />
     <property name="url" value="jdbc:mysql://localhost:3306/jpa2" />
     <property name="username" value="jpa2" />
     <property name="password" value="jpa2" />
     </bean>
     
     <!-- le gestionnaire de transactions -->
     <tx:annotation-driven transaction-manager="txManager" />
     <bean id="txManager"
     class="org.springframework.orm.jpa.JpaTransactionManager">
     <property name="entityManagerFactory"
     ref="entityManagerFactory" />
     </bean>
     
     <!-- traduction des exceptions -->
     <bean
     class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
     
     <!-- annotations de persistance -->
     <bean
     class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
     
     </beans>
    (j'utilise testng et non junit pour les tests)
    il y a un problème au moment de persister un employé mais je ne peux pas en dire plus.

    savez-vous comment je pourrais avoir le contenu des paramètres dans les requêtes hibernate? et la base ast vide après l'exécution de initDB.

    lolveley.

  2. #2
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut
    voici les requêtes SQL interceptées lors de l'exécution de main:


    main:
    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
     
    public static void main(String[] args) {
     
            // configuration de l'application
            IEmployéDao employeDao = new intro_j2ee.dao.employé_dao();
            ICotisationDao cotisationDao = new cotisation_dao();
            IIndemnitéDao indemniteDao = new indemnité_dao();
     
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("intro_J2EEPU");
            EntityManager em = emf.createEntityManager();
            em.getTransaction().begin();
            //cotisation
     
            for (cotisation cot : cotisationDao.findAll()) {
                cotisationDao.destroy(cot);
            }
     
            //indemnité
            for (indemnité ind : indemniteDao.findAll()) {
                indemniteDao.destroy(ind);
            }
            //employé
            for (employé emp : employeDao.findAll()) {
                employeDao.destroy(emp);
            }
     
            em.getTransaction().commit();
     
     
            // on remplit la base
     
            indemnité une_ind = new indemnité(0, 0, 2.38, 1.03, 15.0, 5.0);
            indemnité deux_ind = new indemnité(0, 0, 1.43, 2.0, 10.0, 7.0);
     
     
            employé un_employé = new employé("174075751212322", "TRICHE", "Olivier", 57050, "8 impasse des tilleuls", "metz");
            employé deux_employé = new employé("075075721252403", "ROY", "Betty", 57412, "3 rue des roses", "Clouange");
     
            une_ind.Add(un_employé);
            deux_ind.Add(deux_employé);
     
            em.getTransaction().begin();
            indemniteDao.create(une_ind);
            indemniteDao.create(deux_ind);
     
            employeDao.create(un_employé);
            employeDao.create(deux_employé);
            em.getTransaction().commit();
     
            em.getTransaction().begin();
            cotisation une_cot = new cotisation(1.3, 2.7, 2.1, 1.0);
            cotisationDao.create(une_cot);
            em.getTransaction().commit();
    requêtes:

    1227990510873|140|1|statement||alter table employes drop foreign key FK4722E6BC5882251C
    1227990510998|109|1|statement||drop table if exists cotisations
    1227990511076|78|1|statement||drop table if exists employes
    1227990511107|31|1|statement||drop table if exists indemnites
    1227990511185|78|1|statement||create table cotisations (id integer not null auto_increment, version integer not null, csgrds double precision, csgd double precision, secu double precision, retraite double precision, primary key (id)) ENGINE=InnoDB
    1227990511248|63|1|statement||create table employes (ss varchar(25) not null, version integer not null, nom varchar(25) not null, prenom varchar(25) not null, code_postal integer not null, adresse varchar(25) not null, ville varchar(25) not null, indemnites_indice integer, primary key (ss)) ENGINE=InnoDB
    1227990511310|62|1|statement||create table indemnites (indice integer not null auto_increment, version integer not null, base_heure double precision not null, entretien_jour double precision not null, repas_jour double precision not null, indemnit�_cp double precision not null, primary key (indice)) ENGINE=InnoDB
    1227990511575|265|1|statement||alter table employes add index FK4722E6BC5882251C (indemnites_indice), add constraint FK4722E6BC5882251C foreign key (indemnites_indice) references indemnites (indice)
    1227990512075|203|5|statement||alter table employes drop foreign key FK4722E6BC5882251C
    1227990512106|31|5|statement||drop table if exists cotisations
    1227990512153|47|5|statement||drop table if exists employes
    1227990512168|15|5|statement||drop table if exists indemnites
    1227990512309|141|5|statement||create table cotisations (id integer not null auto_increment, version integer not null, csgrds double precision, csgd double precision, secu double precision, retraite double precision, primary key (id)) ENGINE=InnoDB
    1227990512387|78|5|statement||create table employes (ss varchar(25) not null, version integer not null, nom varchar(25) not null, prenom varchar(25) not null, code_postal integer not null, adresse varchar(25) not null, ville varchar(25) not null, indemnites_indice integer, primary key (ss)) ENGINE=InnoDB
    1227990512449|62|5|statement||create table indemnites (indice integer not null auto_increment, version integer not null, base_heure double precision not null, entretien_jour double precision not null, repas_jour double precision not null, indemnit�_cp double precision not null, primary key (indice)) ENGINE=InnoDB
    1227990512761|312|5|statement||alter table employes add index FK4722E6BC5882251C (indemnites_indice), add constraint FK4722E6BC5882251C foreign key (indemnites_indice) references indemnites (indice)
    1227990512979|0|6|statement|select cotisation0_.id as id7_, cotisation0_.version as version7_, cotisation0_.csgrds as csgrds7_, cotisation0_.csgd as csgd7_, cotisation0_.secu as secu7_, cotisation0_.retraite as retraite7_ from cotisations cotisation0_|select cotisation0_.id as id7_, cotisation0_.version as version7_, cotisation0_.csgrds as csgrds7_, cotisation0_.csgd as csgd7_, cotisation0_.secu as secu7_, cotisation0_.retraite as retraite7_ from cotisations cotisation0_
    1227990513635|359|10|statement||alter table employes drop foreign key FK4722E6BC5882251C
    1227990513744|109|10|statement||drop table if exists cotisations
    1227990513791|47|10|statement||drop table if exists employes
    1227990513822|31|10|statement||drop table if exists indemnites
    1227990513884|62|10|statement||create table cotisations (id integer not null auto_increment, version integer not null, csgrds double precision, csgd double precision, secu double precision, retraite double precision, primary key (id)) ENGINE=InnoDB
    1227990513993|109|10|statement||create table employes (ss varchar(25) not null, version integer not null, nom varchar(25) not null, prenom varchar(25) not null, code_postal integer not null, adresse varchar(25) not null, ville varchar(25) not null, indemnites_indice integer, primary key (ss)) ENGINE=InnoDB
    1227990514056|63|10|statement||create table indemnites (indice integer not null auto_increment, version integer not null, base_heure double precision not null, entretien_jour double precision not null, repas_jour double precision not null, indemnit�_cp double precision not null, primary key (indice)) ENGINE=InnoDB
    1227990514196|140|10|statement||alter table employes add index FK4722E6BC5882251C (indemnites_indice), add constraint FK4722E6BC5882251C foreign key (indemnites_indice) references indemnites (indice)
    1227990514227|0|11|statement|select indemnit�0_.indice as indice12_, indemnit�0_.version as version12_, indemnit�0_.base_heure as base3_12_, indemnit�0_.entretien_jour as entretien4_12_, indemnit�0_.repas_jour as repas5_12_, indemnit�0_.indemnit�_cp as indemnit�6_12_ from indemnites indemnit�0_|select indemnit�0_.indice as indice12_, indemnit�0_.version as version12_, indemnit�0_.base_heure as base3_12_, indemnit�0_.entretien_jour as entretien4_12_, indemnit�0_.repas_jour as repas5_12_, indemnit�0_.indemnit�_cp as indemnit�6_12_ from indemnites indemnit�0_
    1227990514649|172|15|statement||alter table employes drop foreign key FK4722E6BC5882251C
    1227990514664|15|15|statement||drop table if exists cotisations
    1227990514711|47|15|statement||drop table if exists employes
    1227990514742|31|15|statement||drop table if exists indemnites
    1227990514789|47|15|statement||create table cotisations (id integer not null auto_increment, version integer not null, csgrds double precision, csgd double precision, secu double precision, retraite double precision, primary key (id)) ENGINE=InnoDB
    1227990514851|62|15|statement||create table employes (ss varchar(25) not null, version integer not null, nom varchar(25) not null, prenom varchar(25) not null, code_postal integer not null, adresse varchar(25) not null, ville varchar(25) not null, indemnites_indice integer, primary key (ss)) ENGINE=InnoDB
    1227990514914|63|15|statement||create table indemnites (indice integer not null auto_increment, version integer not null, base_heure double precision not null, entretien_jour double precision not null, repas_jour double precision not null, indemnit�_cp double precision not null, primary key (indice)) ENGINE=InnoDB
    1227990515085|171|15|statement||alter table employes add index FK4722E6BC5882251C (indemnites_indice), add constraint FK4722E6BC5882251C foreign key (indemnites_indice) references indemnites (indice)
    1227990515117|16|16|statement|select employ�0_.ss as ss20_, employ�0_.version as version20_, employ�0_.nom as nom20_, employ�0_.prenom as prenom20_, employ�0_.code_postal as code5_20_, employ�0_.adresse as adresse20_, employ�0_.ville as ville20_, employ�0_.indemnites_indice as indemnites8_20_ from employes employ�0_|select employ�0_.ss as ss20_, employ�0_.version as version20_, employ�0_.nom as nom20_, employ�0_.prenom as prenom20_, employ�0_.code_postal as code5_20_, employ�0_.adresse as adresse20_, employ�0_.ville as ville20_, employ�0_.indemnites_indice as indemnites8_20_ from employes employ�0_
    1227990515117|0|2|commit||
    1227990515491|140|21|statement||alter table employes drop foreign key FK4722E6BC5882251C
    1227990515507|16|21|statement||drop table if exists cotisations
    1227990515538|31|21|statement||drop table if exists employes
    1227990515585|47|21|statement||drop table if exists indemnites
    1227990515663|78|21|statement||create table cotisations (id integer not null auto_increment, version integer not null, csgrds double precision, csgd double precision, secu double precision, retraite double precision, primary key (id)) ENGINE=InnoDB
    1227990515772|109|21|statement||create table employes (ss varchar(25) not null, version integer not null, nom varchar(25) not null, prenom varchar(25) not null, code_postal integer not null, adresse varchar(25) not null, ville varchar(25) not null, indemnites_indice integer, primary key (ss)) ENGINE=InnoDB
    1227990515865|93|21|statement||create table indemnites (indice integer not null auto_increment, version integer not null, base_heure double precision not null, entretien_jour double precision not null, repas_jour double precision not null, indemnit�_cp double precision not null, primary key (indice)) ENGINE=InnoDB
    1227990516021|156|21|statement||alter table employes add index FK4722E6BC5882251C (indemnites_indice), add constraint FK4722E6BC5882251C foreign key (indemnites_indice) references indemnites (indice)
    1227990516068|0|22|statement|insert into indemnites (version, base_heure, entretien_jour, repas_jour, indemnit�_cp) values (?, ?, ?, ?, ?)|insert into indemnites (version, base_heure, entretien_jour, repas_jour, indemnit�_cp) values (0, 2.38, 1.03, 15.0, 5.0)
    1227990516099|0|22|statement|insert into employes (version, nom, prenom, code_postal, adresse, ville, indemnites_indice, ss) values (?, ?, ?, ?, ?, ?, ?, ?)|insert into employes (version, nom, prenom, code_postal, adresse, ville, indemnites_indice, ss) values (0, 'TRICHE', 'Olivier', 57050, '8 impasse des tilleuls', 'metz', 1, '174075751212322')
    1227990516131|32|22|commit||
    1227990516162|0|23|statement|select indemnit�0_.indice as indice24_, indemnit�0_.version as version24_, indemnit�0_.base_heure as base3_24_, indemnit�0_.entretien_jour as entretien4_24_, indemnit�0_.repas_jour as repas5_24_, indemnit�0_.indemnit�_cp as indemnit�6_24_ from indemnites indemnit�0_ where indemnit�0_.indice=?|select indemnit�0_.indice as indice24_, indemnit�0_.version as version24_, indemnit�0_.base_heure as base3_24_, indemnit�0_.entretien_jour as entretien4_24_, indemnit�0_.repas_jour as repas5_24_, indemnit�0_.indemnit�_cp as indemnit�6_24_ from indemnites indemnit�0_ where indemnit�0_.indice=1
    1227990516162|-1||resultset|select indemnit�0_.indice as indice24_, indemnit�0_.version as version24_, indemnit�0_.base_heure as base3_24_, indemnit�0_.entretien_jour as entretien4_24_, indemnit�0_.repas_jour as repas5_24_, indemnit�0_.indemnit�_cp as indemnit�6_24_ from indemnites indemnit�0_ where indemnit�0_.indice=1|indice24_ = 1
    1227990516645|187|26|statement||alter table employes drop foreign key FK4722E6BC5882251C
    1227990516677|32|26|statement||drop table if exists cotisations
    1227990516692|15|26|statement||drop table if exists employes
    1227990516723|31|26|statement||drop table if exists indemnites
    1227990516786|63|26|statement||create table cotisations (id integer not null auto_increment, version integer not null, csgrds double precision, csgd double precision, secu double precision, retraite double precision, primary key (id)) ENGINE=InnoDB
    1227990516848|62|26|statement||create table employes (ss varchar(25) not null, version integer not null, nom varchar(25) not null, prenom varchar(25) not null, code_postal integer not null, adresse varchar(25) not null, ville varchar(25) not null, indemnites_indice integer, primary key (ss)) ENGINE=InnoDB
    1227990516911|63|26|statement||create table indemnites (indice integer not null auto_increment, version integer not null, base_heure double precision not null, entretien_jour double precision not null, repas_jour double precision not null, indemnit�_cp double precision not null, primary key (indice)) ENGINE=InnoDB
    1227990517051|140|26|statement||alter table employes add index FK4722E6BC5882251C (indemnites_indice), add constraint FK4722E6BC5882251C foreign key (indemnites_indice) references indemnites (indice)
    1227990517051|0|27|statement|insert into indemnites (version, base_heure, entretien_jour, repas_jour, indemnit�_cp) values (?, ?, ?, ?, ?)|insert into indemnites (version, base_heure, entretien_jour, repas_jour, indemnit�_cp) values (0, 1.43, 2.0, 10.0, 7.0)
    1227990517067|0|27|statement|insert into employes (version, nom, prenom, code_postal, adresse, ville, indemnites_indice, ss) values (?, ?, ?, ?, ?, ?, ?, ?)|insert into employes (version, nom, prenom, code_postal, adresse, ville, indemnites_indice, ss) values (0, 'ROY', 'Betty', 57412, '3 rue des roses', 'Clouange', 1, '075075721252403')
    1227990517082|15|27|commit||
    1227990517098|0|28|statement|select indemnit�0_.indice as indice30_, indemnit�0_.version as version30_, indemnit�0_.base_heure as base3_30_, indemnit�0_.entretien_jour as entretien4_30_, indemnit�0_.repas_jour as repas5_30_, indemnit�0_.indemnit�_cp as indemnit�6_30_ from indemnites indemnit�0_ where indemnit�0_.indice=?|select indemnit�0_.indice as indice30_, indemnit�0_.version as version30_, indemnit�0_.base_heure as base3_30_, indemnit�0_.entretien_jour as entretien4_30_, indemnit�0_.repas_jour as repas5_30_, indemnit�0_.indemnit�_cp as indemnit�6_30_ from indemnites indemnit�0_ where indemnit�0_.indice=1
    1227990517098|-1||resultset|select indemnit�0_.indice as indice30_, indemnit�0_.version as version30_, indemnit�0_.base_heure as base3_30_, indemnit�0_.entretien_jour as entretien4_30_, indemnit�0_.repas_jour as repas5_30_, indemnit�0_.indemnit�_cp as indemnit�6_30_ from indemnites indemnit�0_ where indemnit�0_.indice=1|indice30_ = 1
    1227990517503|171|31|statement||alter table employes drop foreign key FK4722E6BC5882251C
    1227990517519|16|31|statement||drop table if exists cotisations
    1227990517566|31|31|statement||drop table if exists employes
    1227990517581|15|31|statement||drop table if exists indemnites
    1227990517675|94|31|statement||create table cotisations (id integer not null auto_increment, version integer not null, csgrds double precision, csgd double precision, secu double precision, retraite double precision, primary key (id)) ENGINE=InnoDB
    1227990517737|62|31|statement||create table employes (ss varchar(25) not null, version integer not null, nom varchar(25) not null, prenom varchar(25) not null, code_postal integer not null, adresse varchar(25) not null, ville varchar(25) not null, indemnites_indice integer, primary key (ss)) ENGINE=InnoDB
    1227990517847|110|31|statement||create table indemnites (indice integer not null auto_increment, version integer not null, base_heure double precision not null, entretien_jour double precision not null, repas_jour double precision not null, indemnit�_cp double precision not null, primary key (indice)) ENGINE=InnoDB
    1227990518018|171|31|statement||alter table employes add index FK4722E6BC5882251C (indemnites_indice), add constraint FK4722E6BC5882251C foreign key (indemnites_indice) references indemnites (indice)
    1227990518034|0|32|statement|insert into employes (version, nom, prenom, code_postal, adresse, ville, indemnites_indice, ss) values (?, ?, ?, ?, ?, ?, ?, ?)|insert into employes (version, nom, prenom, code_postal, adresse, ville, indemnites_indice, ss) values (0, 'TRICHE', 'Olivier', 57050, '8 impasse des tilleuls', 'metz', 1, '174075751212322')
    1227990518065|31|32|rollback||

  3. #3
    Expert confirmé
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Points : 4 883
    Points
    4 883
    Par défaut
    Salut,

    Est il possible que tu puisses poster ta classe employé ?

  4. #4
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut
    bien sûr, la voilà:

    employé
    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
     
    @Entity
    @Table(name="employes")
    public class employé implements Serializable{
     
        //doit être suivi par indemnité.Add(employé)
        public employé(String ss, String nom, String prénom, int code_postal,
                String adresse, String ville) {
            this.ss = ss;
            this.nom = nom;
            this.prénom = prénom;
            this.code_postal = code_postal;
            this.adresse = adresse;
            this.ville = ville;
        }
     
        public employé() {
        }
     
        @Id
        @Column(length=25,nullable=false)
        private String ss;
     
        //@SuppressWarnings(unused)
        @Version
        private int version;
     
        @Column(length=25,nullable=false)
        private String nom;
     
        @Column(name="prenom",length=25,nullable=false)
        private String prénom;
     
        @Column(nullable=false)
        private int code_postal;
     
        @Column(length=25,nullable=false)
        private String adresse;
     
        @Column(length=25,nullable=false)
        private String ville;
     
        @ManyToOne(fetch=FetchType.LAZY)
        @JoinColumn(name="indemnites_indice")
        private indemnité indice;
     
     
        //***************************************************
     
        public int getVersion() {
            return version;
        }
     
        public void setVersion(int version) {
            this.version = version;
        }
     
        public String getAdresse() {
            return adresse;
        }
     
        public void setAdresse(String adresse) {
            this.adresse = adresse;
        }
     
        public int getCode_postal() {
            return code_postal;
        }
     
        public void setCode_postal(int code_postal) {
            this.code_postal = code_postal;
        }
     
        public intro_j2ee.jpa.indemnité getIndice() {
            return indice;
        }
     
        public void setIndice(intro_j2ee.jpa.indemnité indice) {
            this.indice = indice;
        }
     
        public String getNom() {
            return nom;
        }
     
        public void setNom(String nom) {
            this.nom = nom;
        }
     
        public String getPrénom() {
            return prénom;
        }
     
        public void setPrénom(String prénom) {
            this.prénom = prénom;
        }
     
        public String getSs() {
            return ss;
        }
     
        public void setSs(String ss) {
            this.ss = ss;
        }
     
        public String getVille() {
            return ville;
        }
     
        public void setVille(String ville) {
            this.ville = ville;
        }
     
     
        @Override
        public String toString (){
            return ("Employé : "+this.prénom+" "+this.nom+", version :"+this.getVersion());
     
     
        }
     
        public void persist(Object object) {
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("intro_J2EEPU");
            EntityManager em = emf.createEntityManager();
            em.getTransaction().begin();
            try {
                em.persist(object);
                em.getTransaction().commit();
            } catch (Exception e) {
                e.printStackTrace();
                em.getTransaction().rollback();
            } finally {
                em.close();
            }
        }
    lolveley.

  5. #5
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut
    j'ai trouvé où se situe la remise à zéro de la base (en étudiant le log des requêtes SQL, j'ai constaté que des insert étaient bien passés à la base, mais que ils étaient suivis par des drop table), et ces RAZ se produisant dans la fonction create de employé_dao:

    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
     
     @Override
        public employé create(employé ze_employé) {
     
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("intro_J2EEPU");
            EntityManager em = emf.createEntityManager();
     
            List<employé> liste;
            employé emp2 = ze_employé;
            try {
                em.getTransaction().begin();
                em.persist(ze_employé);
                em.getTransaction().commit();
     
     
            } catch (EntityExistsException e) {
                throw new PamException("Erreur dans dao/employé_dao/create - opération persist", 1);
     
            } catch (Exception e) {
                System.out.println(e.toString());
                throw new PamException("Erreur dans dao/employé_dao/create - opération persist", 2);
     
            }
     
            try {
                Query query = em.createQuery("select e from employé e where e.ss=:ss" );
                query.setParameter("ss", emp2.getSs());
                liste = query.getResultList();
            } catch (Exception e) {
                System.out.println(e.toString());
                throw new PamException("Erreur dans dao/employé_dao/create - opération query", 2);
            }
     
            return liste.get(0);
     
     
        }
    et cela se situe dans les 2 lignes qui instancient em...

    mais je ne sais pas comment résoudre le pb quand même.

    lolveley.

  6. #6
    Expert confirmé
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Points : 4 883
    Points
    4 883
    Par défaut
    Ecoute personnellement,
    je te conseillerais deja de passer par des namesqueries au lieu de passer par des ejbql.
    Soit tu declares tes namesqueries dans tes entities et tu les appel.

    Personnellement, sous glassfish, j'avais eu des erreurs à cause de la declaration par ejbql.

    Donc tente ceci deja.
    Je continue de regarder tes fichiers.

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/03/2015, 16h46
  2. Réponses: 3
    Dernier message: 02/12/2008, 11h39
  3. [NetBeans]Librairy javax.microedition manquante
    Par Arkan dans le forum NetBeans
    Réponses: 1
    Dernier message: 24/02/2005, 16h47
  4. Réponses: 3
    Dernier message: 10/12/2004, 09h42
  5. Réponses: 2
    Dernier message: 05/02/2004, 13h58

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