Je fais face au problème ci-dessus lorsque j'essaie de trier en fonction d'un champ incorporé; Par exemple: J'essaie de trier avec la propriété tObservation.raw.waterLevel.metre
. Mais obtenir l'exception suivante.org.hibernate.QueryException: Les objets de critères ne peuvent pas être créés directement sur les composants
Caused by: org.hibernate.QueryException: Criteria objects cannot be created directly on components. Create a criteria on owning entity and use a dotted property to access component property: tObservation.raw
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getPathInfo(CriteriaQueryTranslator.java:251)
Je crée des alias comme; Pourquoi est-ce que je reçois cette exception?
criteria.createAlias("tObservation", "0").createAlias("0.raw","1").createAlias("1.waterLevel","2").addOrder(Order.asc("2.meter"))
Pourquoi je reçois cette exception?
Le code ci-dessus fonctionne pour deux niveaux: par exemple tObservation.id
p.s: Si j'essaie comme, (sans alias)
criteria.addOrder(Order.asc("tObservation.raw.waterLevel.metre"))
Je reçois même exception.
Ma structure de classe
@Entity
class tank {
Observation tObservation;
}
@Entity
class Observation {
@Embedded
RawObservation raw;
}
@Embeddable
class RawObservation{
@Embedded
Length waterLevel;
}
@Embeddable
class Length{
BigDecimal metre
}
Merci. J'essaierai. Donc, créer des alias est faux dans ce cas? – Ratha
Je ne suis pas sûr. J'ai remarqué une chose cependant. Votre entité Longueur a un champ de compteur mais l'ordre utilise un compteur. Il pourrait aussi être la raison – StanislavL
Je reçois même exception // Causée par: org.hibernate.QueryException: Les objets de critères ne peuvent pas être créés directement sur les composants. Créer un critère sur entité propriétaire et utiliser une propriété en pointillés pour accéder à la propriété des composants: tObservation.raw \t à org.hibernate.loader.criteria.CriteriaQueryTranslator.getPathInfo (CriteriaQueryTranslator.java:251) \t à org.hibernate.loader.criteria .CriteriaQueryTranslator.createCriteriaEntityNameMap (CriteriaQueryTranslator.java:212) \t à org.hibernate.loader.criteria.CriteriaQueryTranslator. (CriteriaQueryTranslator.java:94) // –
Ratha