Frage

Wie kann ein Objekt über Hibernate geladen Objekt basierend auf einem Feldwert eines Mitglieds? Beispiel: Angenommen, die folgenden Klassen bestanden, mit einer Eins-zu-Eins-Beziehung zwischen Bar und foo:

Foo {
    Long id;
}

Bar {
    Long id;
    Foo aMember;
}

Wie man Hibernate Kriterien verwenden könnte Bar zu laden, wenn Sie nur die ID Foo haben?

Das erste, was sprang in meinen Kopf das Foo-Objekt geladen war und festgelegt, dass als Kriterium der Bar Objekt zu laden, aber das scheint verschwenderisch. Gibt es eine wirksame Möglichkeit, dies mit Kriterien zu tun, oder ist HQL die Art und Weise diese behandelt werden sollte?

War es hilfreich?

Lösung

Sie können absolut Kriterien auf effiziente Art und Weise, dies zu erreichen:

session.createCriteria(Bar.class).
        createAlias("aMember", "a").
        add(Restrictions.eq("a.id", fooId));

sollte den Trick tun.

Andere Tipps

Sie können Kriterien oder HQL verwenden.

HQL Beispiel:

Abfrage query = session.createQuery ( "von Bar als Bar, wo bar.aMember.id =: fooId");

query.setParameter ( "fooId", fooId);

Liste result = query.list ();

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