-->
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.  [ 3 posts ] 
Author Message
 Post subject: Criteria Frage / Problem
PostPosted: Wed Aug 01, 2007 1:21 pm 
Newbie

Joined: Thu Jan 04, 2007 5:55 pm
Posts: 4
Ich habe folgendes.

Eine Klasse:

class AClass{
String astr;
Set<BClass> aset;
...
}


Was ich machen möchte ist folgendes:

in HQL würde das in etwa so aussehen:

select ... from AClass where astr = ? OR aset.id = ?;

Ich möchte das aber in Criteria Schreibweise. Hat wer ne Idee?

Ich habe schon mit Restrictions.or bzw. Restrictions.Disjunction() rumgespielt, komme aber nicht auf die Lösung.

Danke im Voraus,

Ralf

_________________
http://www.neologics.de/


Top
 Profile  
 
 Post subject:
PostPosted: Thu Aug 02, 2007 11:35 am 
Newbie

Joined: Thu Aug 02, 2007 10:20 am
Posts: 3
Normalerweise würde es so aussehen:

criteria.add(Restrictions.or(Restrictions.eq("astr", string), Restrictions.eq("aset.id", id)));

Je nachdem wie das Set gemappt ist, hilft aber auch sowas:

criteria.createAlias("aset", "asetAlias")
.add(Restrictions.or(Restrictions.eq("astr", string), Restrictions.eq("asetAlias.id", id)));

Das hat mir bei einem ähnlichen Problem geholfen. Leider hab ich bis heute noch keine shlüssige Erklärung gefunden, warum das Alias eingefügt werden muss.

gruß,
kschaeuble


Top
 Profile  
 
 Post subject:
PostPosted: Mon Aug 27, 2007 9:13 am 
Regular
Regular

Joined: Thu Oct 19, 2006 12:07 pm
Posts: 75
Das Alias sagt hibernate, das er Daten von der B Tabelle laden soll (weil da die IDs von B Objekten gespeichert sind). Sonst lädt hibernate Daten nur aus Tabell A. (mit "laden" meine ich "daten fur das Filtern verwenden"; nicht lazy Associationen werden immer geladen)

Eigentlich sollte das forceLoad() or so ähnlich heissen....
Am besten sollte hibernate selbst erkennen, das die Daten in einer anderen Tabelle liegen und sie automatisch laden, aber das ist (noch?) nicht implementiert.


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