Domanda

Come si può caricare un oggetto tramite Hibernate in base al valore di un campo di un oggetto membro? Ad esempio, supponiamo che esistessero le seguenti classi, con una relazione uno a uno tra bar e foo:

Foo {
    Long id;
}

Bar {
    Long id;
    Foo aMember;
}

Come si possono usare i Criteri di ibernazione per caricare Bar se si avesse solo l'id di Foo?

La prima cosa che mi è saltata in testa è stata caricare l'oggetto Foo e impostarlo come Criterio per caricare l'oggetto Bar, ma questo sembra dispendioso. Esiste un modo efficace per farlo con Criteria o HQL è il modo in cui questo dovrebbe essere gestito?

È stato utile?

Soluzione

Puoi assolutamente usare i Criteri in modo efficiente per raggiungere questo obiettivo:

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

dovrebbe fare il trucco.

Altri suggerimenti

Puoi usare Criteria o HQL.

Esempio HQL:

Query query = session.createQuery (" dalla barra come barra dove bar.aMember.id =: fooId ");

query.setParameter (" fooId " ;, fooId);

Elenco risultati = query.list ();

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top