-->
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.  [ 4 posts ] 
Author Message
 Post subject: Criteria gesucht für Beziehungstabelle
PostPosted: Sat Nov 11, 2006 8:58 am 
Regular
Regular

Joined: Wed Nov 01, 2006 2:17 pm
Posts: 78
Hallo,


ich suche verzweifelt nach einem Criteria-Ausdruck, der mir alle Gruppen eines Benutzers ausgibt.

Es existieren die Tabellen Users, Groups und UserGroups. UserGroups beinhaltet die Verknüpfungen zwischen User und Group mit Hilfe derer IDs.

Jetzt möchte ich folgende Methode schreiben, die mir alle Gruppen des Benutzers mit übergebener "userid" ermittelt:

Code:
   public List<Group> getByUser(long userid) {
      return getSession().createCriteria(Group.class) ..............;
   }


Wie geht's hier weiter?

Hier habe ich das UserGroup-Mapping:

Code:
<hibernate-mapping package="de.tfhberlin.eclipsophone.server.webapp.beans" auto-import="true">
  <class name="UserGroup" table="UserGroups" lazy="false">
    <id name="id" column="id" type="long" unsaved-value="0">
      <generator class="native"/>
    </id>
   <version name="version" column="version" unsaved-value="negative"/>   
    <property name="user_id" column="user_id" type="long"/>
    <property name="group_id" column="group_id" type="long"/>
  </class>
</hibernate-mapping>


Top
 Profile  
 
 Post subject:
PostPosted: Sat Nov 11, 2006 1:28 pm 
Regular
Regular

Joined: Wed Nov 01, 2006 2:17 pm
Posts: 78
Mit folgendem SQL-Befehl erreiche ich das Ziel:

select g.id, g.name, g.description from groups g, usergroups where usergroups.user_id=2 and usergroups.group_id = g.id

(Wähle alle Gruppen, in denen der Benutzer mit der ID 2 Mitglied ist.)

Aber wie verpacke ich das jetzt in ein "Hibernate-Criteria"?


Top
 Profile  
 
 Post subject:
PostPosted: Sun Nov 12, 2006 8:18 am 
Regular
Regular

Joined: Wed Nov 01, 2006 2:17 pm
Posts: 78
Ich hab's:

Code:
   public List<Group> getByUser(long userid)
   {
      User user = (User) getSession().createCriteria(User.class)
      .add(Restrictions.idEq(new Long(userid)))
      .uniqueResult();
      
      return (List<Group>) user.getSubscribed_groups();
   }


Ich hole mir anhand der übergebenen userid einfach den Benutzer und lasse mir über dessen Methoden dann einfach alle Gruppen von ihm geben.
So erspare ich mir große Umwege.


Top
 Profile  
 
 Post subject:
PostPosted: Mon Nov 13, 2006 11:21 am 
Expert
Expert

Joined: Tue Nov 23, 2004 7:00 pm
Posts: 570
Location: mostly Frankfurt Germany
Ich vermute, dass Dein Mapping suboptimal ist.
Die Klasse UserGroups wird wahrscheinlich überhaupt nicht benötigt.

Schau noch mal unter m:n Beziehungen in der Hibernate Reference nach.

Die Gruppen kriegt man dann über user.getGroups()

_________________
Best Regards
Sebastian
---
Training for Hibernate and Java Persistence
Tutorials for Hibernate, Spring, EJB, JSF...
eBook: Hibernate 3 - DeveloperGuide
Paper book: Hibernate 3 - Das Praxisbuch
http://www.laliluna.de


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 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.