Frage Abrufen von Embedded oder Komponenten mithilfe von Hibernate Criteria API


Ich habe diese Klasse als eine Entität zugeordnet, lasst sie Person nennen. Person hat eine eingebettete / Komponentenbeziehung zu Adresse. Ich habe Probleme, ein Kriterium zu verwenden, das Adressobjekte zurückgeben würde. Ich habe das versucht:

Criteria.createCriteria(Address.class)

Was nicht funktioniert. Ich denke, ich muss durch die Entität gehen, aber dann würde ich eine Art Projektion brauchen?

Criteria.createCriteria(Person.class).<<what goes here???>>

Vorschläge?


7
2017-09-24 14:02


Ursprung


Antworten:


Die Lebensdauer der Komponente wird vom Eigentümer kontrolliert. Sie werden NICHT als Assoziationen betrachtet. Sie können die Komponente daher nicht selbst aus einer Abfrage abrufen. Sie können es jedoch in Kriterien verwenden.

Angenommen, Ihre Klasse "Adresse" ist als "Adresse" innerhalb von "Person" zugeordnet, können Sie Folgendes tun:

Criteria.createCriteria(Person.class)
 .add(Restrictions.eq("address.street", street));

6
2017-09-24 16:19



Auf diese Weise kann die Eigenschaft des eingebetteten Objekts im Ruhezustand abgerufen oder referenziert werden.

Criteria criteria = sessionFactory.getCurrentSession().createCriteria(
                Parent.class,"parent");
criteria.createAlias("embeddedObjectFieldName", "parent.embeddedObjectFieldName");

criteria.setProjection(Projections.projectionList()
                .add(Projections.groupProperty("parent.propertyOne"))
                .add(Projections.max("embeddedObjectFieldName.embeddedobjectproperty")));

Die obige Hoffnung verdeutlicht


0
2017-09-12 15:44