Frage

Ich versuche, eine Abfrage mit Hibernate Kriterien für das folgende Szenario zu erstellen:

  • Zwei Einheiten: Anzeige und Bericht
  • (jede mit ihren eigenen Tabellen, Klassen usw.)
  • ein Indikator kann in Null zu vielen Berichten verwendet werden
  • ein Bericht verwendet Null auf viele Indikatoren
  • also, ich habe eine Verknüpfungstabelle, die die Beziehung speichern
  • wird die Beziehung beider definiert in Klassen und deren Hibernate Mappings
  • in der Benutzeroberfläche kann der Benutzer eine oder mehrere Berichte auswählen (unter anderem), und ich möchte die DB für die Indikatoren in diesen Berichten
  • zur Abfrage

Ich habe versucht, die folgenden:

criteria.add(Restrictions.in("Reports", selectedReports));

, aber alles, was ich bekommen ist eine seltsame SQL-Anweisung mit

where this_.Indicator_ID in (?)

und dann eine JDBC-Ausnahme (fehlende Parameter)

Irgendwelche Ideen? Danke.

Hinweis: Ich habe in Querying ManyToManyrelationship mit Hibernate Criteria sah aber die akzeptierte Lösung gibt es einen benutzerdefinierten sQL-String zu bauen ...

War es hilfreich?

Lösung

  Criteria c = session.createCriteria(Indicator.class);
    c.add(Restrictions.eq("someField", myObject).createCriteria("reports")
    .add(Restrictions.eq("reportName", name);
    c.list();

Sie müssen ein Unterkriterien für das Unternehmen zu schaffen, die in einer Sammlung auf einem anderen Unternehmen gehalten wird.

String[] selectedReportsId = {"1", "2", "3"};
 c.add(Restrictions.eq("someField",myObject).createCriteria("reports")
    .add(Restrictions.in("id", selectedReportsId);

Dann schauen Sie sich die Spitze über die Ergebnisse hier Umwandlung: https: // docs. jboss.org/hibernate/orm/3.3/reference/en-US/html/querycriteria.html#querycriteria-associations

Auch kann dies etwas Licht auf, was Sie w / Kriterien tun können: http://www.hibernate.org/hib_docs/ v3 / api / org / hibernate / Kriterium / Restrictions.html

Andere Tipps

Wenn Sie müssen, hier sind ein paar Hinweise darauf, dass Google kam mit zurück nach der Suche nach "Hibernate HQL many-to-many":

http://patf.net /blogs/index.php?blog=2&c=1&more=1&pb=1&tb=1&title=many_to_many_in_hql

Und von den Hibernate-Foren:

http://forum.hibernate.org/viewtopic.php?p = 2340747 & sid = d4c8d2fcc16aed0201f73eb74619692a

Und von den Frühlings-Foren:

http://forum.springframework.org/showthread.php?t=36870

Hoffe, dass diese Hilfe.

Für den Moment, das ist, wie ich es (dank zmf) zu arbeiten.

Criteria subcrit = criteria.createCriteria("Reports");
Disjunction dis = Restrictions.disjunction();
for (Reports r : selectedReports) {
    dis.add(Restrictions.idEq(r.getID()));
}
subcrit.add(dis);

Dies ist fast genau, was vorgeschlagen ZMF, alles, was ich hinzugefügt war die Disjunktion der Kriterien aus der Sammlung aufzubauen, die herumgereicht wird.

, dass links Alles, was zu tun ist, um zu versuchen, die Sammlung direkt zu verwenden ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top