-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: probleme avec ma methode find or createQuery
PostPosted: Wed Feb 18, 2009 8:03 pm 
Regular
Regular

Joined: Wed Jan 28, 2009 8:31 pm
Posts: 54
Bonjour j ai encore un probleme avec hibernate 2.8
voici mon code

Code:
public InnerClass batch(List<Infogene> liste) throws HibernateException {
      Session session = null;
      List list = null;
      Transaction tx = null;
      int nbEnrModifie=0;
      int nbEnrEnregistre=0;
      String mgsError = null;
      try {
         session = HibernateUtil.currentSession();
         tx = session.beginTransaction();
         AvinfogePojo pojo= null;
      
         for (Infogene element : liste) {
            mgsError=" le num de dossier est :" + element.getNoDossier();
            if(("3496".trim()).equals(element.getNoDossier().trim()))
               mgsError=" le num de dossier est :" + element.getNoDossier();
            /*list =session
                     .createQuery(
                           " select from AvinfogePojo as base  where base.id.noDossier = ?")
                     .setString(0, element.getNoDossier().trim()).list();*/
            
            list = session
            .find("from AvinfogePojo as base  where base.id.noDossier = ?",element.getNoDossier().trim(),Hibernate.STRING);

         if(list.size()>0)
         {
            pojo = (AvinfogePojo) list.get(0);
            updatePojo(element,pojo);
            session.update(pojo);
            nbEnrModifie++;
         }
         else
         {
            pojo = this.creerPojo(element);
            session.save(pojo);
            nbEnrEnregistre++;
         }         
      
      }
         tx.commit();
         InnerClass rep = new InnerClass();
         rep.setNbEnrEnregistre(nbEnrEnregistre);
         rep.setNbEnrModifie(nbEnrModifie);
         rep.setNbEnrModifie(nbEnrModifie);
         return rep;

      } catch (HibernateException e) {
         if (tx != null)
            tx.rollback();
         
         throw new ServiceException(e.getMessage()+ mgsError, e);

      }

      finally {
         
         
         HibernateUtil.closeSession();
         
      }
   }



ma console d erreur
Quote:
11:55:48,648 DEBUG SessionImpl:1537 - find: from AvinfogePojo as base where base.id.noDossier = ?
11:55:48,648 DEBUG QueryParameters:119 - parameters: [3496]
11:55:48,648 DEBUG SessionImpl:2267 - flushing session
11:55:48,648 DEBUG SessionImpl:2467 - Flushing entities and processing referenced collections
11:55:48,648 DEBUG SessionImpl:2808 - Processing unreferenced collections
11:55:48,648 DEBUG SessionImpl:2822 - Scheduling collection removes/(re)creates/updates
11:55:48,648 DEBUG SessionImpl:2291 - Flushed: 1 insertions, 0 updates, 0 deletions to 2 objects
11:55:48,648 DEBUG SessionImpl:2296 - Flushed: 0 (re)creations, 0 updates, 0 removals to 0 collections
11:55:48,664 DEBUG Printer:75 - listing entities:
11:55:48,664 DEBUG Printer:82 - ca.canassistance.pojo.AvinfogePojo{groupeClient=2541, idAccident=N, idUser=STAR, dtModif=20090218, noCertificatSam=2564784, doubleAss=, id=AvinfogeId{noDossier=5419, noGroupe=052104, noCertificat=2564784, dtEvenement=20060208}}
11:55:48,664 DEBUG Printer:82 - ca.canassistance.pojo.AvinfogePojo{groupeClient=, idAccident=N, idUser=STAR, dtModif=20090218, noCertificatSam=214554245254, doubleAss=, id=AvinfogeId{noDossier=5814, noGroupe=052645, noCertificat=2145542452, dtEvenement=20060428}}
11:55:48,664 DEBUG SessionImpl:2321 - changes must be flushed to space: AVINFOGE
11:55:48,664 DEBUG SessionImpl:1819 - Need to execute flush
11:55:48,664 DEBUG SessionImpl:2380 - executing flush
11:55:48,664 DEBUG EntityPersister:447 - Inserting entity: [ca.canassistance.pojo.AvinfogePojo#ca.canassistance.pojo.AvinfogeId@42294161]
11:55:48,664 DEBUG BatcherImpl:204 - about to open: 0 open PreparedStatements, 0 open ResultSets
11:55:48,664 DEBUG SQL:230 - insert into AVINFOGE (IG_ID_DOUBLE_ASS, IG_GROUPE_CLIENT, IG_NO_CERTIFICAT_SAM, IG_ID_USER, IG_DT_MODIF, IG_ID_ACCIDENT, IG_NO_GROUPE, IG_NO_CERTIFICAT, IG_DT_EVENEMENT, IG_NO_DOSSIER) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
11:55:48,664 DEBUG BatcherImpl:253 - preparing statement
11:55:48,664 DEBUG EntityPersister:382 - Dehydrating entity: [ca.canassistance.pojo.AvinfogePojo#ca.canassistance.pojo.AvinfogeId@42294161]
11:55:48,664 DEBUG StringType:46 - binding '' to parameter: 1
11:55:48,664 DEBUG StringType:46 - binding '' to parameter: 2
11:55:48,664 DEBUG StringType:46 - binding '214554245254' to parameter: 3
11:55:48,664 DEBUG StringType:46 - binding 'STAR' to parameter: 4
11:55:48,664 DEBUG IntegerType:46 - binding '20090218' to parameter: 5
11:55:48,664 DEBUG StringType:46 - binding 'N' to parameter: 6
11:55:48,664 DEBUG StringType:46 - binding '052645' to parameter: 7
11:55:48,664 DEBUG StringType:46 - binding '2145542452' to parameter: 8
11:55:48,664 DEBUG IntegerType:46 - binding '20060428' to parameter: 9
11:55:48,664 DEBUG StringType:46 - binding '5814' to parameter: 10
11:55:48,664 DEBUG BatcherImpl:28 - Adding to batch
11:55:48,664 DEBUG BatcherImpl:50 - Executing batch size: 1
11:55:48,664 DEBUG JDBCExceptionReporter:49 - SQL Exception
java.sql.BatchUpdateException: ORA-00001: unique constraint (FACTCAN.AVINFOGE_INDEX1) violated

at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10698)
at net.sf.hibernate.impl.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:54)
at net.sf.hibernate.impl.BatcherImpl.executeBatch(BatcherImpl.java:128)
at net.sf.hibernate.impl.SessionImpl.executeAll(SessionImpl.java:2438)
at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2392)
at net.sf.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:1821)
at net.sf.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:1578)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1543)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1531)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1527)
at ca.canassistance.model.dao.AvinfogeDAO.batch(AvinfogeDAO.java:210)
at ca.canassistance.service.AvingogeServicePersistance.batch(AvingogeServicePersistance.java:72)
at ca.canassistance.batch.MettreJourInfogene.<init>(MettreJourInfogene.java:139)
at ca.canassistance.batch.MettreJourInfogene.main(MettreJourInfogene.java:809)
11:55:48,664 WARN JDBCExceptionReporter:57 - SQL Error: 1, SQLState: 23000
11:55:48,664 ERROR JDBCExceptionReporter:58 - ORA-00001: unique constraint (FACTCAN.AVINFOGE_INDEX1) violated

11:55:48,664 WARN JDBCExceptionReporter:57 - SQL Error: 1, SQLState: 23000
11:55:48,664 ERROR JDBCExceptionReporter:58 - ORA-00001: unique constraint (FACTCAN.AVINFOGE_INDEX1) violated

11:55:48,664 DEBUG BatcherImpl:211 - done closing: 0 open PreparedStatements, 0 open ResultSets
11:55:48,664 DEBUG BatcherImpl:275 - closing statement
11:55:48,664 DEBUG JDBCExceptionReporter:49 - Could not execute JDBC batch update
java.sql.BatchUpdateException: ORA-00001: unique constraint (FACTCAN.AVINFOGE_INDEX1) violated
at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10698)
at net.sf.hibernate.impl.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:54)
at net.sf.hibernate.impl.BatcherImpl.executeBatch(BatcherImpl.java:128)
at net.sf.hibernate.impl.SessionImpl.executeAll(SessionImpl.java:2438)
at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2392)
at net.sf.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:1821)
at net.sf.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:1578)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1543)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1531)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1527)
at ca.canassistance.model.dao.AvinfogeDAO.batch(AvinfogeDAO.java:210)
at ca.canassistance.service.AvingogeServicePersistance.batch(AvingogeServicePersistance.java:72)
at ca.canassistance.batch.MettreJourInfogene.<init>(MettreJourInfogene.java:139)
at ca.canassistance.batch.MettreJourInfogene.main(MettreJourInfogene.java:809)
11:55:48,664 WARN JDBCExceptionReporter:57 - SQL Error: 1, SQLState: 23000
11:55:48,664 ERROR JDBCExceptionReporter:58 - ORA-00001: unique constraint (FACTCAN.AVINFOGE_INDEX1) violated

11:55:48,664 WARN JDBCExceptionReporter:57 - SQL Error: 1, SQLState: 23000
11:55:48,664 ERROR JDBCExceptionReporter:58 - ORA-00001: unique constraint (FACTCAN.AVINFOGE_INDEX1) violated

11:55:48,664 ERROR SessionImpl:2400 - Could not synchronize database state with session


Premierement je fais pas une insertion bien un find
Ok je suis pas sur le la facon que hibernate fait sont find
mais admettons qu il fait une insertion. Il n y a pas de violation d index
verification avec oracle

on plus on peut voir que l insertion cause probleme pour le num
IG_NO_DOSSIER 5814
qui ne fait pas du tout parti de ma requete.
J avoue rien comprendre
noDossier=3496 est la valeur de mon NoDossier

Code:

CREATE UNIQUE INDEX "FACTCAN"."AVINFOGE_INDEX1" ON "FACTCAN"."AVINFOGE" ("IG_NO_GROUPE", "IG_NO_CERTIFICAT", "IG_DT_EVENEMENT", "IG_NO_DOSSIER")
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "FACTCAN" ;

  CREATE INDEX "FACTCAN"."AVINFOGE_INDEX2" ON "FACTCAN"."AVINFOGE" ("IG_NO_DOSSIER")
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "FACTCAN" ;


l erreur semble sous l insertion du dossier
hibernate try to Inserting IG_NO_DOSSIER 5814
Quote:
12:07:30,564 DEBUG SQL:230 - insert into AVINFOGE (IG_ID_DOUBLE_ASS, IG_GROUPE_CLIENT, IG_NO_CERTIFICAT_SAM, IG_ID_USER, IG_DT_MODIF, IG_ID_ACCIDENT, IG_NO_GROUPE, IG_NO_CERTIFICAT, IG_DT_EVENEMENT, IG_NO_DOSSIER) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
12:07:30,564 DEBUG BatcherImpl:253 - preparing statement
12:07:30,564 DEBUG EntityPersister:382 - Dehydrating entity: [ca.canassistance.pojo.AvinfogePojo#ca.canassistance.pojo.AvinfogeId@42294161]
12:07:30,564 DEBUG StringType:46 - binding '' to parameter: 1
12:07:30,564 DEBUG StringType:46 - binding '' to parameter: 2
12:07:30,564 DEBUG StringType:46 - binding '214554245254' to parameter: 3
12:07:30,564 DEBUG StringType:46 - binding 'STAR' to parameter: 4
12:07:30,564 DEBUG IntegerType:46 - binding '20090218' to parameter: 5
12:07:30,564 DEBUG StringType:46 - binding 'N' to parameter: 6
12:07:30,564 DEBUG StringType:46 - binding '052645' to parameter: 7
12:07:30,564 DEBUG StringType:46 - binding '2145542452' to parameter: 8
12:07:30,564 DEBUG IntegerType:46 - binding '20060428' to parameter: 9
12:07:30,564 DEBUG StringType:46 binding '5814' to parameter: 10
12:07:30,564 DEBUG BatcherImpl:28 - Adding to batch
12:07:30,564 DEBUG BatcherImpl:50 - Executing batch size: 1

IG_NO_DOSSIER = 5814 ou IG_NO_DOSSIER = 3496 qui est la valeur
de ma requete
ne viole pas la contrainte de l index primaire
de tout facon fait un pas d insert


mon pojo


Code:

package ca.canassistance.pojo;

import java.io.Serializable;
import java.util.List;

import net.sf.hibernate.HibernateException;
import ca.canassistance.model.Infogene;
import ca.canassistance.model.dao.AvinfogeDAO;

/**
* This class has been automatically generated by Hibernate Synchronizer. For
* more information or documentation, visit The Hibernate Synchronizer page at
* http://www.binamics.com/hibernatesync or contact Joe Hudson at
* joe@binamics.com.
*
* This is an object that contains data related to the AVINFOGE table. Do not
* modify this class because it will be overwritten if the configuration file
* related to this class is modified.
*
* @hibernate.class table="AVINFOGE"
*/
public class AvinfogePojo implements Serializable {

   /**
    *
    */
   private static final long serialVersionUID = -2444185467393453780L;

   // fields
   private java.lang.String doubleAss;

   private java.lang.String groupeClient;

   private java.lang.String noCertificatSam;

   private java.lang.String idUser;

   private java.lang.Integer dtModif;

   private java.lang.String idAccident;

   private AvinfogeId id;

   private AvinfogeDAO dao;

   // constructors
   public AvinfogePojo(String doubleAss, Integer dtEvenement,
         String groupeClient, String noDossier, String noCertificatSam,
         String noCertificat, String noGroupe, String idUser,
         Integer dtModif, String idAccident) {
      AvinfogeId avinfogeId = new AvinfogeId();
      avinfogeId.setDtEvenement(dtEvenement);
      avinfogeId.setNoCertificat(noCertificat.trim());
      avinfogeId.setNoDossier(noDossier);
      avinfogeId.setNoGroupe(noGroupe);
      this.setDoubleAss(doubleAss);

      this.setGroupeClient(groupeClient);
      this.setNoCertificatSam(noCertificatSam);
      this.setIdUser(idUser);
      this.setDtModif(dtModif);
      this.setIdAccident(idAccident);
      this.setId(avinfogeId);

   }

   public AvinfogePojo() {
      initialize();
   }

   public AvinfogePojo(Infogene infogene) {
      AvinfogeId id = new AvinfogeId();
      id.setDtEvenement(infogene.getDtEvenement());
      id.setNoCertificat(infogene.getNoCertificat().trim());
      id.setNoDossier(infogene.getNoDossier());
      id.setNoGroupe(infogene.getNoGroupe());
      this.setId(id);
      this.setDoubleAss(infogene.getIdDoubleAss());
      // this.setDtModif(avinfoge.getModif);
      this.setGroupeClient(infogene.getGroupeClient());
      this.setIdAccident(infogene.getIdAccident());
      this.setNoCertificatSam(infogene.getNoCertificatSam());
      // avinfoge.getn

   }

   protected void initialize() {
   }

   public static long getSerialVersionUID() {
      return serialVersionUID;
   }

   public java.lang.String getDoubleAss() {
      return doubleAss;
   }

   public void setDoubleAss(java.lang.String doubleAss) {
      this.doubleAss = doubleAss;
   }

   public java.lang.Integer getDtModif() {
      return dtModif;
   }

   public void setDtModif(java.lang.Integer dtModif) {
      this.dtModif = dtModif;
   }

   public java.lang.String getGroupeClient() {
      return groupeClient;
   }

   public void setGroupeClient(java.lang.String groupeClient) {
      this.groupeClient = groupeClient;
   }

   public AvinfogeId getId() {
      return id;
   }

   public void setId(AvinfogeId id) {
      this.id = id;
   }

   public java.lang.String getIdAccident() {
      return idAccident;
   }

   public void setIdAccident(java.lang.String idAccident) {
      this.idAccident = idAccident;
   }

   public java.lang.String getIdUser() {
      return idUser;
   }

   public void setIdUser(java.lang.String idUser) {
      this.idUser = idUser;
   }

   public java.lang.String getNoCertificatSam() {
      return noCertificatSam;
   }

   public void setNoCertificatSam(java.lang.String noCertificatSam) {
      this.noCertificatSam = noCertificatSam;
   }

   public boolean estDansLaBase(String cleDossier) throws HibernateException {
      if (dao == null)
         this.setDao(new AvinfogeDAO());
      List l = this.getDao().find(cleDossier);
      if (l != null)
         return true;
      return false;

   }

   public AvinfogeDAO getDao() {
      return dao;
   }

   public void setDao(AvinfogeDAO dao) {
      this.dao = dao;
   }

   @Override
   public int hashCode() {
      final int PRIME = 31;
      int result = 1;
      result = PRIME * result
            + ((doubleAss == null) ? 0 : doubleAss.hashCode());

      result = PRIME * result + ((dtModif == null) ? 0 : dtModif.hashCode());
      result = PRIME * result
            + ((groupeClient == null) ? 0 : groupeClient.hashCode());
      result = PRIME * result + ((id == null) ? 0 : id.hashCode());
      result = PRIME * result
            + ((idAccident == null) ? 0 : idAccident.hashCode());
      result = PRIME * result + ((idUser == null) ? 0 : idUser.hashCode());

      result = PRIME * result
            + ((noCertificatSam == null) ? 0 : noCertificatSam.hashCode());

      return result;
   }

   @Override
   public boolean equals(Object obj) {
      if (this == obj)
         return true;
      if (obj == null)
         return false;
      if (getClass() != obj.getClass())
         return false;
      final AvinfogePojo other = (AvinfogePojo) obj;
      if (dao == null) {
         if (other.dao != null)
            return false;
      } else if (!dao.equals(other.dao))
         return false;
      if (doubleAss == null) {
         if (other.doubleAss != null)
            return false;
      } else if (!doubleAss.equals(other.doubleAss))
         return false;

      if (dtModif == null) {
         if (other.dtModif != null)
            return false;
      } else if (!dtModif.equals(other.dtModif))
         return false;
      if (groupeClient == null) {
         if (other.groupeClient != null)
            return false;
      } else if (!groupeClient.equals(other.groupeClient))
         return false;
      if (id == null) {
         if (other.id != null)
            return false;
      } else if (!id.equals(other.id))
         return false;
      if (idAccident == null) {
         if (other.idAccident != null)
            return false;
      } else if (!idAccident.equals(other.idAccident))
         return false;
      if (idUser == null) {
         if (other.idUser != null)
            return false;
      } else if (!idUser.equals(other.idUser))
         return false;

      if (noCertificatSam == null) {
         if (other.noCertificatSam != null)
            return false;
      } else if (!noCertificatSam.equals(other.noCertificatSam))
         return false;

      return true;
   }

}


my hbm


Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
   "-//Hibernate/Hibernate Mapping DTD//EN"
   "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >

<hibernate-mapping package="ca.canassistance.pojo">
   <class
      name="AvinfogePojo"
      table="AVINFOGE"
   >
   
   
   
   
    <composite-id name="id" class="ca.canassistance.pojo.AvinfogeId">

        <key-property name="noGroupe" column="IG_NO_GROUPE" type="string" length="6"/>
        <key-property name="noCertificat" column="IG_NO_CERTIFICAT" type="string"  length="10"/>
        <key-property name="dtEvenement" column="IG_DT_EVENEMENT" type="integer" length="8"/>
        <key-property name="noDossier" column="IG_NO_DOSSIER" type="string" length="6"/>
      </composite-id>
     
      <property
         name="doubleAss"
         column="IG_ID_DOUBLE_ASS"
         type="string"
         not-null="false"
         length="1"
      />
      
      <property
         name="groupeClient"
         column="IG_GROUPE_CLIENT"
         type="string"
         not-null="false"
         length="8"
      />
      <property
         name="noCertificatSam"
         column="IG_NO_CERTIFICAT_SAM"
         type="string"
         not-null="false"
         length="20"
      />
      
      
      <property
         name="idUser"
         column="IG_ID_USER"
         type="string"
         not-null="false"
         length="4"
      />
      <property
         name="dtModif"
         column="IG_DT_MODIF"
         type="integer"
         not-null="false"
         length="8"
      />
      <property
         name="idAccident"
         column="IG_ID_ACCIDENT"
         type="string"
         not-null="false"
         length="1"
      />


</class>
</hibernate-mapping>




Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.