-->
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: Creteria subselect auf many-to-one set
PostPosted: Sat May 06, 2006 6:57 am 
Newbie

Joined: Sat May 06, 2006 6:37 am
Posts: 2
Hallo ich habe schon in "allen" Docus des Internetz gesucht.

Hibernate version:3

Ich habe zwei Proben und Pruefungen.
Proben hat eine many-to-one relation (Set) zu Prüfungen. Nun möchte ich alle Proben finden, die genau 2 oder 3 bestimmte Prüfungen (eine Menge) im Prüfprogramm enthalten ??

Proben Mapping:
/**
* @hibernate.set name="pruefungen" table="EM_PROBE_PRUEFUNG" lazy="false"
* @hibernate.collection-key column="PROBE_ID"
* @hibernate.collection-one-to-many class="de.intrasystems.porsche.emission.backend.dao.mappings.Pruefprogramm"
* @return Set
*/
public Set getPruefungen() {
return pruefungen;
}


Mein Criteria

DetachedCriteria query DetachedCriteria.forClass(Probe.class).createCriteria("pruefungen");

for(int y=0; y < pruefungen.length; y++ ){
query.add( Restrictions.eq("pruefung", this.dao.get(Pruefung.class, pruefungen[y].getPruefungId()) ));
}

Mit einer einzelnen Prüfung funktioniert es...

Ich hoffe, die Info sind verständlich

Vielen Dank
Clemens


Top
 Profile  
 
 Post subject:
PostPosted: Sat May 06, 2006 6:15 pm 
Expert
Expert

Joined: Tue Nov 23, 2004 7:00 pm
Posts: 570
Location: mostly Frankfurt Germany
Hallo,

vielleicht falsch verstanden aber hilft folgendes weiter:

Code:
from Proben p where p.pruefungen.size = 2


Gruß Sebastian

_________________
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  
 
 Post subject:
PostPosted: Sun May 07, 2006 2:40 am 
Newbie

Joined: Sat May 06, 2006 6:37 am
Posts: 2
Ich meinte es etwas anders

ich habe 10 Pruefungen mit PK wie DES, DMA, TGA, etc
und nun will ich alle Proben finden die z.b folgende prüfungen beinhalten:

DMA & TGA


In SQL habe ich das so gemacht:

elect * from EM_PROBE_PRUEFUNG_REL PRUEFUNGEN1, EM_PROBE_PRUEFUNG_REL PRUEFUNGEN2
where PRUEFUNGEN1.PROBE_ID = PRUEFUNGEN2.PROBE_ID
and PRUEFUNGEN1.PRUEFUNG_ID = 'DMA' and PRUEFUNGEN2.PRUEFUNG_ID='TGA'

ich möchte sowas machen wie if Probe.contains(...), denn mit and und or Verknüpfungen funktionierte es nicht. Bei and kein Ergebnis und bei or nicht nur die, die die Prüfungen in Kombination enthalten, sondern alle die eine der Prüfungen enthalten.

Ich habe auch schon versucht mit mehreren Aliases das criteria zu basteln, aber keine duplicated aliases erlaubt.:

DetachedCriteria _ca = DetachedCriteria.forClass(Probe.class);
for(int y=0; y < pruefungen.length; y++ ){
_ca = _ca.createAlias("pruefungen", "pruefung" + y );
_ca.add( Restrictions.eq("pruefung" + y +".pruefung", this.dao.get(Pruefung.class, pruefungen[y].getPruefungId()) ));
}


Top
 Profile  
 
 Post subject:
PostPosted: Sun May 07, 2006 3:39 am 
Expert
Expert

Joined: Tue Nov 23, 2004 7:00 pm
Posts: 570
Location: mostly Frankfurt Germany
Ich benutze Criteria queries relativ selten und kann Dir diese nicht auf Anhieb fehlerfrei nennen.

In HQL wäre es einfach:

from Problem p where elements (p.pruefungen.pk) in ('x','y')

Gruß Sebastian

_________________
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.