Bonjour,
Voilà la requête que je souhaite faire en SQL:
Code:
select *
from ligne_commande this_
where this_.num_cde in
(select cc_.num_cde from commercial_commande cc_, collaborateur c_
where lower(c_.nom) like '%olland%'
and c_.num_clb = cc_.num_clb)
and this_.ind_ann = 0 order by this_.num_cde asc, this_.num_lig_cde asc
Actuellement j'ai ce code:
Code:
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(CommercialCommande.class)
.setProjection(Property.forName("id.numCde"));
//detachedCriteria.createCriteria("commercial");
detachedCriteria.createAlias("commercial", "com")
.add(Restrictions.ilike("com.nom", nomCommercial, MatchMode.ANYWHERE))
.add(Restrictions.eqProperty("com.numClb", "id.numClb"));
criteria.add(Subqueries.propertyIn("id.numCde", detachedCriteria));
C'est presque fonctionnel, le soucis étant que dans le SQL généré, l'alias n'est pas créé, donc je me retrouve avec une erreur SQL "identificateur non valide".
J'ai aussi tenté via un createCriteria, ne sachant pas si ça changeait quelque chose, mais si je fais un createCriteria j'ai encore une autre exception (MappingException: Unknown entity: null).
Je précise aussi que dans le mapping ainsi que la classe Java, tous les champs ont le bon type et nom.
Si vous avez une piste je vous remercie :)