-->
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.  [ 7 posts ] 
Author Message
 Post subject: pb avec fetch
PostPosted: Tue Jul 19, 2005 9:08 am 
Regular
Regular

Joined: Mon Apr 25, 2005 5:36 am
Posts: 103
salut !!


Voilà j'ai un problème :

Ce que je veux faire :


Je veux éviter d'avoir une lazy exception, donc j'utilise fetch dans ma requête :

"from Departement D1 left join fetch D1.Ressources"


J'obtiens bien ce que je veux, c'est-à-dire, pour manipuler une collection en l'occurence une collection de Ressources.

Le problème que je rencontre c'est que j'ai trop de résultat. Je m'explique:

par Exemple:
J'ai le département D1 qui à comme ressoruce R1, R2 et R3
J'ai le département D2 qui à comme ressoruce R4, R5

Ce que je veux faire, c'est récupérer l'ensemble des départements,

or avec cette requête j'ai une réponse de 5 départements,

en fait j'obtiens trois fois D1 et deux fois D2
Mais moi ce que je veux comme resultat c'est 2 département (D1 et D2)

J'ai essayer de mettre un select distinct mais çà marche pas

qqn peut-il m'aider?


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jul 19, 2005 11:14 am 
Regular
Regular

Joined: Mon Apr 25, 2005 5:36 am
Posts: 103
voila ce que j'obtiens dans ma console:

34 [fr.icdc.dei.fwk.sample.dto.Externe@2b323e, fr.icdc.dei.fwk.sample.dto.Externe@186f247, fr.icdc.dei.fwk.sample.dto.Interne@9a8a68]
34 [fr.icdc.dei.fwk.sample.dto.Externe@2b323e, fr.icdc.dei.fwk.sample.dto.Externe@186f247, fr.icdc.dei.fwk.sample.dto.Interne@9a8a68]
20 [fr.icdc.dei.fwk.sample.dto.Ressource@77eaf8, fr.icdc.dei.fwk.sample.dto.Ressource@e35bb7, fr.icdc.dei.fwk.sample.dto.Ressource@435a3a, fr.icdc.dei.fwk.sample.dto.Ressource@1f4e571]
20 [fr.icdc.dei.fwk.sample.dto.Ressource@77eaf8, fr.icdc.dei.fwk.sample.dto.Ressource@e35bb7, fr.icdc.dei.fwk.sample.dto.Ressource@435a3a, fr.icdc.dei.fwk.sample.dto.Ressource@1f4e571]
20 [fr.icdc.dei.fwk.sample.dto.Ressource@77eaf8, fr.icdc.dei.fwk.sample.dto.Ressource@e35bb7, fr.icdc.dei.fwk.sample.dto.Ressource@435a3a, fr.icdc.dei.fwk.sample.dto.Ressource@1f4e571]
34 [fr.icdc.dei.fwk.sample.dto.Externe@2b323e, fr.icdc.dei.fwk.sample.dto.Externe@186f247, fr.icdc.dei.fwk.sample.dto.Interne@9a8a68]
20 [fr.icdc.dei.fwk.sample.dto.Ressource@77eaf8, fr.icdc.dei.fwk.sample.dto.Ressource@e35bb7, fr.icdc.dei.fwk.sample.dto.Ressource@435a3a, fr.icdc.dei.fwk.sample.dto.Ressource@1f4e571]


je ne voudrais avoir que 2 tuples !!

comment faire pour ne récupérer que 2 tuples et pas toutes cette liste.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jul 21, 2005 5:04 am 
Regular
Regular

Joined: Mon Apr 25, 2005 5:36 am
Posts: 103
julientarrago wrote:
voila ce que j'obtiens dans ma console:

34 [fr.icdc.dei.fwk.sample.dto.Externe@2b323e, fr.icdc.dei.fwk.sample.dto.Externe@186f247, fr.icdc.dei.fwk.sample.dto.Interne@9a8a68]
34 [fr.icdc.dei.fwk.sample.dto.Externe@2b323e, fr.icdc.dei.fwk.sample.dto.Externe@186f247, fr.icdc.dei.fwk.sample.dto.Interne@9a8a68]
20 [fr.icdc.dei.fwk.sample.dto.Ressource@77eaf8, fr.icdc.dei.fwk.sample.dto.Ressource@e35bb7, fr.icdc.dei.fwk.sample.dto.Ressource@435a3a, fr.icdc.dei.fwk.sample.dto.Ressource@1f4e571]
20 [fr.icdc.dei.fwk.sample.dto.Ressource@77eaf8, fr.icdc.dei.fwk.sample.dto.Ressource@e35bb7, fr.icdc.dei.fwk.sample.dto.Ressource@435a3a, fr.icdc.dei.fwk.sample.dto.Ressource@1f4e571]
20 [fr.icdc.dei.fwk.sample.dto.Ressource@77eaf8, fr.icdc.dei.fwk.sample.dto.Ressource@e35bb7, fr.icdc.dei.fwk.sample.dto.Ressource@435a3a, fr.icdc.dei.fwk.sample.dto.Ressource@1f4e571]
34 [fr.icdc.dei.fwk.sample.dto.Externe@2b323e, fr.icdc.dei.fwk.sample.dto.Externe@186f247, fr.icdc.dei.fwk.sample.dto.Interne@9a8a68]
20 [fr.icdc.dei.fwk.sample.dto.Ressource@77eaf8, fr.icdc.dei.fwk.sample.dto.Ressource@e35bb7, fr.icdc.dei.fwk.sample.dto.Ressource@435a3a, fr.icdc.dei.fwk.sample.dto.Ressource@1f4e571]


je ne voudrais avoir que 2 tuples !!

comment faire pour ne récupérer que 2 tuples et pas toutes cette liste.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jul 21, 2005 5:11 am 
Regular
Regular

Joined: Mon Apr 25, 2005 5:36 am
Posts: 103
julientarrago wrote:
julientarrago wrote:
voila ce que j'obtiens dans ma console:

34 [fr.icdc.dei.fwk.sample.dto.Externe@2b323e, fr.icdc.dei.fwk.sample.dto.Externe@186f247, fr.icdc.dei.fwk.sample.dto.Interne@9a8a68]
34 [fr.icdc.dei.fwk.sample.dto.Externe@2b323e, fr.icdc.dei.fwk.sample.dto.Externe@186f247, fr.icdc.dei.fwk.sample.dto.Interne@9a8a68]
20 [fr.icdc.dei.fwk.sample.dto.Ressource@77eaf8, fr.icdc.dei.fwk.sample.dto.Ressource@e35bb7, fr.icdc.dei.fwk.sample.dto.Ressource@435a3a, fr.icdc.dei.fwk.sample.dto.Ressource@1f4e571]
20 [fr.icdc.dei.fwk.sample.dto.Ressource@77eaf8, fr.icdc.dei.fwk.sample.dto.Ressource@e35bb7, fr.icdc.dei.fwk.sample.dto.Ressource@435a3a, fr.icdc.dei.fwk.sample.dto.Ressource@1f4e571]
20 [fr.icdc.dei.fwk.sample.dto.Ressource@77eaf8, fr.icdc.dei.fwk.sample.dto.Ressource@e35bb7, fr.icdc.dei.fwk.sample.dto.Ressource@435a3a, fr.icdc.dei.fwk.sample.dto.Ressource@1f4e571]
34 [fr.icdc.dei.fwk.sample.dto.Externe@2b323e, fr.icdc.dei.fwk.sample.dto.Externe@186f247, fr.icdc.dei.fwk.sample.dto.Interne@9a8a68]
20 [fr.icdc.dei.fwk.sample.dto.Ressource@77eaf8, fr.icdc.dei.fwk.sample.dto.Ressource@e35bb7, fr.icdc.dei.fwk.sample.dto.Ressource@435a3a, fr.icdc.dei.fwk.sample.dto.Ressource@1f4e571]


je ne voudrais avoir que 2 tuples !!

comment faire pour ne récupérer que 2 tuples et pas toutes cette liste.



Je précise qu'il s'agit d'une relation many-to-many


Pour une relation one-to-many j'ai réglé mon cas mais pas avec la relation many-to-many

merci de m'aider.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jul 26, 2005 5:00 am 
Regular
Regular

Joined: Mon Apr 25, 2005 5:36 am
Posts: 103
On m'a donné une solution qui es de mettre une hashmap et maintenant cela marche.


maintenant j'ai un autre problème :

je voudrais faire ceci :

from Utilisateur U1 " +
" left join U1.SetOfRessourceModif " +
" left join U1.SetOfRessourceCreation " +
" left join U1.SetOfDepartementCreation " +
" left join U1.SetOfDepartementModif " +
" left join U1.SetOfProjetModif " +
" left join U1.SetOfProjetCreation " +
" order by Nom";


ceci ne marche pas, voici mes erreurs :


org.hibernate.exception.GenericJDBCException: could not execute query
at org.hibernate.exception.ErrorCodeConverter.handledNonSpecificException(ErrorCodeConverter.java:92)
at org.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:80)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:1518)
at org.hibernate.loader.Loader.list(Loader.java:1498)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:369)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:268)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:788)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
at fr.icdc.dei.fwk.sample.persistance.service.impl.UtilisateurDAOImpl.findAllUtilisateur(UtilisateurDAOImpl.java:161)
at fr.icdc.dei.fwk.start.Test.Donnees_Utilisateur(Test.java:78)
at fr.icdc.dei.fwk.start.Test.main(Test.java:328)
Caused by: java.sql.SQLException: ORA-00918: Définition de colonne ambigu

at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1405)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(TTC7Protocol.java:643)
at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:1674)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1870)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:363)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:314)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:118)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1197)
at org.hibernate.loader.Loader.doQuery(Loader.java:366)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:206)
at org.hibernate.loader.Loader.doList(Loader.java:1515)
... 8 more
Exception in thread "main"



En fait ma table utilisateur est relié à trois tables (Projet, Ressource et Departement) et pour chaque je connais l'utilisateur qui l'a crée et qui l'a modifiée.
Que faut(il faire.

merci


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jul 26, 2005 5:36 am 
Regular
Regular

Joined: Mon Apr 25, 2005 5:36 am
Posts: 103
n'y a-t-il pas une autre solution que le fetch pour éviter le lazy exception?


Ce que j'ai compris ce qu'en utilisatn left join fetch on charge tout les éléments dans la requêtes et l'on peut y accéder en dehors d'une session.


Moi ce que je veux faire c'est pour accéder à des données à un moment donné et ne pas être obigé de tout chargé au début.


merci de m'éclaircir sur ce point


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jul 26, 2005 12:33 pm 
Hibernate Team
Hibernate Team

Joined: Thu Dec 18, 2003 9:55 am
Posts: 1977
Location: France
Quote:
Moi ce que je veux faire c'est pour accéder à des données à un moment donné et ne pas être obigé de tout chargé au début.


tu peux tant que tes instances sont attachées à une session, sinon tu ne peux pas, ce le principe de base d'un objet attaché/détaché.

_________________
Anthony,
Get value thanks to your skills: http://www.redhat.com/certification


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

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.