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 : probleme session.load


Sujet :

Hibernate Java

  1. #1
    Futur Membre du Club
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2003
    Messages : 8
    Points : 6
    Points
    6
    Par défaut hibernate : probleme session.load
    Bonjour,

    je poursuis le développement d'un projet et je tombe sur erreur dont je ne comprend pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ...
    INFO: building session factory
    19-sept.-2007 11:20:26 net.sf.hibernate.impl.SessionFactoryObjectFactory addInstance
    INFO: Not binding factory to JNDI, no JNDI name configured
    Exception in thread "main" net.sf.hibernate.ObjectNotFoundException: No row with the given identifier exists: 1, of class: User.DtbUser
    	at net.sf.hibernate.ObjectNotFoundException.throwIfNull(ObjectNotFoundException.java:24)
    	at net.sf.hibernate.impl.SessionImpl.load(SessionImpl.java:1921)
    	at TestHibernate1.main(TestHibernate1.java:33)
    Lorsque je pointe sur ma base de dev, je n'ai pas de problème.
    Le problème apparait seulement quand je pointe sur ma base de prod et quand j'utilise des session.load.
    (j'ai les même données en dev et en prod)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Query q2 = session.createQuery("from DtbUser where User_Num = 1");
    DtbUser pers = (DtbUser) q2.list().get(0);
    System.out.println("nom1 = " + pers.getUserName());
    le code ci dessus fonctionne tout le temps

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DtbUser personne = (DtbUser) session2.load(DtbUser.class, new Integer(1));
    le code ci dessus fonctionne seulement en dev mais pas en prod

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    List list = session.find("from DtbUser");
    Iterator it = list.iterator();
    le code ci dessus fonctionne tout le temps


    voici mon fichier de configuration
    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-configuration
        PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
     
    <hibernate-configuration>
    	<session-factory>
    		<!-- local connection properties -->
    		<property name="hibernate.connection.url">
    			jdbc:mysql://10.10.2.1:3306/test
    		</property>
    		<property name="hibernate.connection.driver_class">
    			org.gjt.mm.mysql.Driver
    		</property>
    		<property name="hibernate.connection.username">xxx</property>
    		<property name="hibernate.connection.password">xxx</property>
    		<!-- property name="hibernate.connection.pool_size"></property -->
    		<!-- dialect for MySQL -->
    		<property name="dialect">
    			net.sf.hibernate.dialect.MySQLDialect
    		</property>
    		<property name="hibernate.show_sql">true</property>
    		<property name="hibernate.use_outer_join">true</property>
    		<property name="hibernate.transaction.factory_class">
    			net.sf.hibernate.transaction.JTATransactionFactory
    		</property>
    		<property name="jta.UserTransaction">
    			java:comp/UserTransaction
    		</property>
    		<mapping resource="DtbUser.hbm" />
    	</session-factory>
    </hibernate-configuration>

    voici mon fichier de mapping
    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
     
    <?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="User">
    	<class name="DtbUser" table="DTB_USER">
     
    		 <id name="Id" type="integer">
    		 <column name="User_Num" sql-type="integer"/>
    		 <generator class="vm" />
    		 </id>
     
    		<property name="UserOrderBook" type="integer">
    		<column name="User_order_book" sql-type="int(2)" not-null="true"/>
    		</property>
     
     		<property name="UserPwd" type="string">
    		<column name="User_Pwd" sql-type="char(10)" not-null="true"/>
    		</property>
     
     		<property name="UserFirst" type="boolean">
    		<column name="User_First" sql-type="int(1)" not-null="false"/>
    		</property>
     
     		<property name="UserDatePwd" type="date">
    		<column name="User_date_pwd" sql-type="char(10)" not-null="true"/>
    		</property>
     
     		<property name="UserStatut" type="boolean">
    		<column name="User_Statut" sql-type="int(1)" not-null="false"/>
    		</property>
     
     		<property name="UserCode" type="integer">
    		<column name="User_Code" sql-type="int(10)" not-null="false"/>
    		</property>
     
     		<property name="UserId" type="string">
    		<column name="User_Id" sql-type="char(50)" not-null="true"/>
    		</property>
     
     		<property name="UserNbConnection" type="integer">
    		<column name="User_nb_connection" sql-type="int(11)" not-null="true"/>
    		</property>
     
     		<property name="UserName" type="string">
    		<column name="User_Name" sql-type="char(10)" not-null="true"/>
    		</property>
     
     		<property name="UserNbCentConnection" type="integer">
    		<column name="User_nb_cent_connection" sql-type="int(11)" not-null="true"/>
    		</property>
     
    	</class>
    </hibernate-mapping>

    je vous remercie par avance pour votre aide.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 109
    Points : 68
    Points
    68
    Par défaut
    Je sais pas si ça peut t'aider:
    http://gmarwaha.blogspot.com/2007/01...-sessions.html

    en gros:
    load doit être utilisé si tu est sur que l'objet existe en base, sinon ça gènere une exception...
    entoure ton code d'un
    try{}
    catch (ObjectNotFoundException e) {
    logger.error(e+" L'Objet n'existe pas");
    }

    sinon utilise plutôt get() qui te retourne un objet null si l'objet n'existe pas...

    Bonne cance

  3. #3
    Futur Membre du Club
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2003
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci pour ta réponse debutanteVB.NET.

    J'avais bien mis mon code dans un try catch, ce qui évitait de faire planter lamentablement mon serveur tomcat.

    Je viens de trouver le problème. Mes deux version e MySql sont différentes entre la prod(4.1.21) et le dev(4.0.17). Le driver JDBC que j'utilisais via hibernate ne pouvait fonctionner correctement avec la prod car le driver ne supportait pas la version de mySql.

    Encore merci pour ta réponse et bonne journée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/11/2007, 15h25
  2. hibernate : probleme suppression objet et session
    Par christools7 dans le forum Hibernate
    Réponses: 5
    Dernier message: 31/08/2007, 18h04
  3. Probleme Hibernate + JPA -> lazy loading non respecté
    Par MikoMax dans le forum Hibernate
    Réponses: 1
    Dernier message: 28/08/2007, 15h13
  4. Réponses: 1
    Dernier message: 28/06/2007, 18h05
  5. Probleme de session.load
    Par edenyorke dans le forum Hibernate
    Réponses: 2
    Dernier message: 08/06/2007, 13h00

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