bonjour, ma hierarchie veux que je fasse mes requête en utilisant l'API criteria

Voici ma requête
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
		Session session = (Session) entityManager.getDelegate();
		Criteria criteria = session.createCriteria(GrpLanguage.class, "gf");
		criteria.createAlias("gf.grpLanguagePk", "grpLanguagePk1", JoinType.LEFT_OUTER_JOIN);
		criteria.createAlias("grpLanguagePk1.grp", "grp1", JoinType.LEFT_OUTER_JOIN);
		criteria.createAlias("grp1.grpPk", "grpPk1", JoinType.LEFT_OUTER_JOIN);
		ProjectionList projectionList = Projections.projectionList();
		projectionList.add(Projections.property("grpPk1.gfCode").as("code"));
		projectionList.add(Projections.property("gf.gfsLabel").as("label"));
		criteria.setProjection(projectionList);
		criteria.add(Restrictions.eq("grpLanguagePk1.languageCode",languageCode)); 
 
		DetachedCriteria existCriteria = DetachedCriteria.forClass(GrpLanguage.class, "gf2");
		existCriteria.createAlias("gf2.grpLanguagePk", "grpLanguagePk2", JoinType.LEFT_OUTER_JOIN);
		existCriteria.createAlias("grpLanguagePk2.grp", "grp2", JoinType.LEFT_OUTER_JOIN);
		existCriteria.createAlias("grp2.grpPk", "grpPk2", JoinType.LEFT_OUTER_JOIN);		
		existCriteria.setProjection(Projections.property("gf2.gfsLabel"));
		existCriteria.add(Restrictions.eqProperty("grpPk2.gfCode", "grpPk1.gfCode"));
		existCriteria.add(Restrictions.eqProperty("grpPk2.prCode", "grpPk1.prCode"));
		existCriteria.add(Restrictions.or(Restrictions.like("gf2.gfsLabel", keyWord, MatchMode.ANYWHERE).ignoreCase(),Restrictions.like("grpPk2.gfCode", keyWord,
				MatchMode.ANYWHERE).ignoreCase()));
 
		criteria.add(Subqueries.exists(existCriteria));
		criteria.addOrder(Order.asc("grpPk1.gfCode"));
		criteria.setResultTransformer(new AliasToBeanResultTransformer(GfDto.class));
		List<GfDto> resultSelect = criteria.list();
et mes classes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
 
public class GrpLanguage implements Serializable {
 
	@EmbeddedId
	private GrpLanguagePk grpLanguagePk;
 
	@Column(name = "LIB_GF", columnDefinition = CHAR_COLUMN)
	private String gfsLabel;
...
}
 
et
 
@Embeddable
public class GrpLanguagePk implements Serializable {
	public static final String CHAR_COLUMN = "char(100)";
 
 
	@Column(name = "COD_LA", columnDefinition = CHAR_COLUMN)
	private String languageCode;
 
	@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
	@JoinColumns({ @JoinColumn(name = "COD_GF"), @JoinColumn(name = "COD_PR") })
	@JsonBackReference
	private Grp grp;
...
}
 
et
 
 
@Entity
@Table(name = "LUP_GRP")
@AssociationOverrides({ @AssociationOverride(name = "grpPk.GfCode", joinColumns = { @JoinColumn(name = "COD_GF") }),
		@AssociationOverride(name = "grpPk.PrCode", joinColumns = { @JoinColumn(name = "COD_PR") }) })
@NamedQueries({
	@NamedQuery(name = "Grp.FIND_GRP_VALID", query = "SELECT g FROM Grp g WHERE g.codState=:cdStatus") })
public class Grp extends AbstractEntity implements Serializable {
 
	private static final long serialVersionUID = 1L;
	public static final String FIND_GRP_VALID = "Grp.FIND_GRP_VALID" ;
 
	@EmbeddedId
	private GrpPk grpPk;
 
...}
 
 
et
 
@Embeddable
public class GrpPk implements Serializable {
 
	@Column(name = "COD_GF", columnDefinition = CHAR_COLUMN)
	private String gfCode;
	@Column(name = "COD_PR", columnDefinition = CHAR_COLUMN)
	private String prCode;
...
}
à l'éxécution de ma requête, j'ai l'erreur suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
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: grpLanguagePk
pourtant, j'ai bien accédé à ma propriété grpLanguagePk en créant un alias et en y accédant à partir de mon objet principal, je ne vois pas ce qu'il ne va pas. Pourriez vous m'aider