Hibernate Books

All times are UTC - 5 hours [ DST ]



Post new topic Reply to topic  [ 6 posts ] 
Author Message
 Post subject: findByQuery
PostPosted: Tue Nov 16, 2010 6:07 am 
Newbie

Joined: Thu Apr 08, 2010 8:47 am
Posts: 18
Hallo,

ich verwende die Methode "findByQuery" folgendermaßen:
Code:
   public List<Project> findAllProjectsOfUser(int userId) {
      Project project = new Project();
      User user = new User(true);
      user.setUserId(userId);
      user.getProjects().add(project);
      project.setUser(user);
      return getHibernateTemplate().findByExample(project);
   }


Egal was ich für den Parameter "userId" einsetze, es werden immer alle Projekte ausgegeben.
Ich habe das Gefühl, dass nur die Projektdaten in die Abfrage kommen.
Zum Code noch:
Die Verbindung User (1) zu Projekte (n) ist bidirektional.

Hat einer eine gute Idee, wie man das lösen kann?

Viele Grüße
MK


Top
 Profile  
 
 Post subject: Re: findByQuery
PostPosted: Tue Nov 16, 2010 6:24 am 
Beginner
Beginner

Joined: Fri Aug 24, 2007 4:46 am
Posts: 36
Location: Bielefeld / Germany
Hi,

in der offiziellen Doku zu Example-Queries steht:

"""Version properties, identifiers and associations are ignored. By default, null valued properties are excluded."""

http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#querycriteria-examples

Da musst Du vermutlich einen alternativen Query-Mechanismus verwenden.

Grüße; Maik

_________________
jease.org - Java with Ease


Top
 Profile  
 
 Post subject: Re: findByQuery
PostPosted: Tue Nov 16, 2010 6:30 am 
Newbie

Joined: Thu Apr 08, 2010 8:47 am
Posts: 18
Moin,

vielen Dank! Ich kenne mich damit leider nichtso aus.
Ich habe zwar von @NamedQueries gelesen, fand sie aber nicht so schön, da man das Objekt wieder selber zusammenbauen muss.
Hast du evtl. einen guten Vorschlag, welche ich nehmen sollte?

MfG
Michi


Top
 Profile  
 
 Post subject: Re: findByQuery
PostPosted: Tue Nov 16, 2010 10:22 am 
Beginner
Beginner

Joined: Fri Aug 24, 2007 4:46 am
Posts: 36
Location: Bielefeld / Germany
Hi,

je nach Geschmack kannst Du HQL oder Criteria-Queries nehmen. Da Du ja bereits mit der QueryByExample gearbeitet hast, ist vermutlich die Criteria-Query eher was für Dich:

HQL: http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/queryhql.html
Criteria: http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/querycriteria.html

Grüße, Maik

_________________
jease.org - Java with Ease


Top
 Profile  
 
 Post subject: Re: findByQuery
PostPosted: Tue Nov 16, 2010 12:55 pm 
Newbie

Joined: Thu Apr 08, 2010 8:47 am
Posts: 18
Vielen Dank, ich habe mich aber für die HQL entschieden, da dies irgendwie besser aussieht. Außerdem habe ich gelesen (fragt mich nicht wieso oder wo), dass die Criteria buggy ist. kA

[Close]


Top
 Profile  
 
 Post subject: Re: findByQuery
PostPosted: Mon Dec 06, 2010 4:13 pm 
Newbie

Joined: Mon May 21, 2007 3:36 am
Posts: 16
Ich hoffe du entschuldigst, dass ich hier trotz [close] nochmal was "nachschieße".

(1) Das Criteria-API ist NICHT buggy. Zumindest was einfache Abfragen dieser Art betrifft. Wir verwenden es für weit komplexere Abfragen und haben bisher keine Probleme damit.

(2) Das Critiera-API ist für Situationen gedacht, in denen dynamische Abfragen zur Laufzeit "zusammengebaut" werden müssen. In diesem Fall ist die Abfrage aber sehr statisch und lautet in etwa:
Code:
select p from Project p join p.user u where u.userId=:userId

Die User-ID wird als query-Parameter zur Laufzeit angegeben:
Code:
query.setParameter("userId", userId);

_________________
Mario.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 6 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.