Bonjour,

J'ai un problème avec un order qui ne fonctionne pas, hibernate ne trouve pas la propriété sur laquelle je veux trier.

Je fais une requête sur des objets de type RelGroupRightData dont voici le code java :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
public class RelGroupRightData implements Serializable
{
	private GroupData groupData;
	private RightData rightData;
	private ObjectTypeData objectTypeData;
}
Voici le code de l'objet GroupData :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
public class GroupData
{
	private int id;
	private String name;
	private String description;
}
Voici le mapping hibernate de la classe RelGroupRightData:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
<class name="RelGroupRightData" table="rel_group_right" lazy="false">
	<composite-id >
		<key-many-to-one name="groupData" class="GroupData" column="group_id"/>
		<key-many-to-one name="objectTypeData" class="ObjectTypeData" column="object_type_id"/>
	</composite-id>
	<many-to-one name="rightData" class="RightData" column="right_id"/>
</class>
et celui de la classe GroupData :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
<class name="GroupData" table="adm_group" lazy="false">
	<id column="id" name="id" type="java.lang.Integer">
		<generator class="sequence">
			<param name="sequence">seq_adm_group</param>
		</generator>
	</id>
 
	<property column="description" name="description" not-null="false" type="java.lang.String" />
	<property column="name" name="name" not-null="true" type="java.lang.String" />
</class>
Je veux récupérer les objets GroupData pour un certain ObjectTypeData (pas expliqué ici car aucun problème de ce côté là) et trier le résultat par name.

Voici le criteria que je construis avec le critère sur l'id de ObjectTypeData qui fonctionne et le tri qui ne fonctionne pas:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Criteria criteria = hibernateSession.createCriteria(RelGroupRightData.class);
criteria.add(Restrictions.eq("objectTypeData.id", new Integer(objectTypeForm.getId())));
criteria.addOrder(Order.asc("groupData.name"));
J'obtiens donc l'erreur suivante : org.hibernate.QueryException: could not resolve property: groupData.name of: RelGroupRightData

A savoir que si je remplace le tri par "groupData.id" cela fonctionne.
Il doit donc s'agir d'un problème de mapping au niveau des relations key-many-to-one qui ne permettent de créer des critères que sur l'id ?


Merci d'avance!