Bonjour, j'aimerais pouvoir transformer une entité en DTO ET aussi certains de ses champs qui sont des collections d'autres entités que je voudrais aussi transformer en simple DTO à la volée avec "Transformers.aliasToBean".

Je sais comment transformer mon entité principale en DTO avec ses champs propres, via les projections adéquates, mais je voudrais pouvoir faire de même avec ses jointures.

Voici mon entité principale :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
Panel{
Long panelId;
String panelName;
Long panelSize;
Collection<Experiment> experiments;
Collection<Lot> lots;
...
}
Voici les entités associées que je voudrais aussi transformer en DTO à la volée :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Experiment{
Long experimentId;
String experimentName;
...
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Lot{
Long lotId;
String description ;
String lotNumber;
...
}

Là, ce sont le DTO correspondant que je voudrais obtenir :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
PanelDTO{
Long panelId ;
String panelName;
Long panelSize ;
Collection<ExperimentDTO> experiments;
Collection<LotDTO> lots ;
...
}
En utilisant ces DTO pour les transformer à la volée dans le DAO de Panel :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
ExperimentDTO{
Long experimentId ;
String experimentName;
...
}

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
LotDTO{
Long lotId;
String description ;
String lotNumber;
...
}

Pourriez-vous me guider pour que je sache quoi modifier dans le code suivant pour transformer à la volées mes collections de Lot et de Experiment en DTO ?
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
 
protected findPanel() throws Exception{
		Criteria crit = getSession().createCriteria(Panel.class, "p");
 
		ProjectionList projectionList = Projections.projectionList();
		projectionList.add(Projections.distinct(Projections.id()));
		projectionList.add(Projections.property("p.panelName"), "panelName");
		projectionList.add(Projections.property("p.panelSize"), "size");
		projectionList.add(Projections.property("p.experiments"), "experiments");
		projectionList.add(Projections.property("p.lots"), "lots");
 
		crit.setProjection(projectionList);
 
		crit.setResultTransformer(Transformers.aliasToBean(PanelVO.class));
 
		return crit.list()
}
Merci beaucoup pour votre aide.