Hibernate Criteria Queries - Abfragen von Collection-Members

Status
Nicht offen für weitere Antworten.

thomator

Bekanntes Mitglied
Moinsen,
ich weiß jetzt nicht, ob ich hier im richtigen Board unterwegs bin, falls nein bitte verschieben.

Also zum Problem:
Ich will mittels Hibernate Criteria Query alle Objekte abfragen, die in einer Collection (Attribut des Objekts) mehrere (bestimmte) assoziierte Objekte enthalten. Das Aufbauen einer ODER-Beziehung ist kein Problem, nur wenn die Collection mehrere Objekte enthalten muss, sprich UND-Verknüpft.
In den Dokumentationen und Tutorials wird immer nur nach einem Objekt gefragt, aber das reicht mir nicht. Ich habe auch schon ordentlich rumprobiert, allein es mangelt an Erfolg^^.
Kennt sich damit jemand aus und hat einen Lösungsansatz fürmich parat?

PS: Mir ist durchaus bewußt, dass sich mit der Liste der Objekte, die eines der Objekte enthalten, da ganze rekonstruieren lassen würde, aber ich würde schon gern mit Hibernate-Bordmitteln...[/b]
 
S

SlaterB

Gast
kannst du denn überhaupt Sets bei Criterias benutzen?

war hier mal eine Frage:
http://www.java-forum.org/de/viewtopic.php?t=50898
wenn du dazu ein Beispiel hast, nur zu ;)

---------

ist die Und-Verknüpfung nicht ein allgemeines Problem der SQL-Sprache?

nimm eine Tabelle mit 4 Attributen a, b,c,d, jeweils Inhalt 0 oder 1,
nun willst du alle Elemente mit mindesten zwei 1en,
da bleibt dir doch auch nichts anderes übrig als
(a and b) or (a and c) or ...

evtl. kann man mit DECODE was tricksen?
where (DECODE(a,0,0,1)+DECODE... >1)
 

thomator

Bekanntes Mitglied
Also mit sets zu arbeiten ist eigentlich kein Problem. Da kann man für Sub-Criterias nutzen oder mit Aliasen arbeiten.
Ist in dem Kapitel hier auch ganz gut beschrieben:

querycriteria-associations

Allerdings imer nur für ein Objekt. Wie gesagt, ich hab da bisschen mit experimentiert und eine oder-Abfrage funzt auch. Ich schreibe mir die Hash-Werte der Objekte in einen Integer-Array (intArray), in den Datenobjekten gibt es ein Feld hash, in dem der Hash-Wert gespeichert ist (dient auch als primär-schlüssel in der DB).
Dann das bisschen Code hier (im criterion is der ganze Baum mit den 'simplen' Kriterien abgebildet):
Code:
Criteria rootCriteria = session.createCriteria(criterion);
Criteria tmpCriteria = rootCriteria.createCriteria(<<hier der Feldname des Collection-Feldes>>);
Junction j = Restrictions.disjunction();
for(int i = 0; i < intArray.langth; i++){
    j.add(Restrictions.eq("hash", intArray[i]));
}
tmpCriteria.add(j);

List list = rootCriteria.list();
Und damit hat man alle Objekte, die eines der im intArray 'referenzierten' Objekte in der entsprechenden Collection haben.
Problem ist halt, dass, wenn ich statt disjunction eine conjunction verwenden will, alle Collection-Objekte geprüft werden auf hash=intArray[0] AND hash=intArray[1] usw.

Zur Not muss ich halt dann wirklich die Einträge der List durchlaufen und prüfen, ob alle Kriterien erfüllt sind.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Hibernate Envers - Aufruf der Methode zum Speichern selbst ausführen oder managen? Allgemeine Java-Themen 0
S org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: right near Allgemeine Java-Themen 6
P Hibernate Proxy Allgemeine Java-Themen 1
C Hibernate EJB JTA Allgemeine Java-Themen 4
M JAXB Reimport zu Hibernate DB -> Exception Allgemeine Java-Themen 3
Shoox Hibernate / JAXB für Schnittstellen Allgemeine Java-Themen 4
Jay_030 Guice + Hibernate = Probleme? Allgemeine Java-Themen 2
G Hibernate search (Lucene) - Index wird nicht rechtzeitig erzeugt? Allgemeine Java-Themen 2
H Hibernate: @OneToOne Beziehung Allgemeine Java-Themen 4
N Hibernate und Fehlermeldung Allgemeine Java-Themen 18
neurox Tutorial: Hibernate mit MySQL (erste Schritte) Allgemeine Java-Themen 34
P Hibernate oder Java Persistence API? Allgemeine Java-Themen 3
A Spring und Hibernate Allgemeine Java-Themen 2
MQue log4j mit hibernate Allgemeine Java-Themen 3
F Hibernate speichern - Null Allgemeine Java-Themen 5
T Wie Hibernate im Tomcat installieren? Allgemeine Java-Themen 2
M Hibernate frage zur Verbindung Allgemeine Java-Themen 3
G Hibernate, JTable und Performance Allgemeine Java-Themen 17
G Obfuscator und Hibernate! Allgemeine Java-Themen 5
W JBoss,Axis2,Hibernate/JPA,Oracle - EntityManager Problem Allgemeine Java-Themen 4
J Hibernate & Java Allgemeine Java-Themen 4
A Hibernate und Swing Allgemeine Java-Themen 2
G Hibernate speichert Daten nur während Session in HSQL-DB Allgemeine Java-Themen 10
AssELAss Junit-Tests für SQL-Veribindung sowie SQL-Queries? Allgemeine Java-Themen 3
J Ergebnismenge eines SQL-Queries in JTable anzeigen Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben