JPA 2 : Count avec MapJoin => Ne fonctionne Pas
Bonjour à tous !
Alors je viens vers vous car je contre un soucis pour faire un count combiné à un MapJoin
Code:
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
|
public long countItems(final String title, final String url) {
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<CmsItem> query = builder.createQuery(entityClass);
Root<CmsItem> page = query.from(entityClass);
query.select(page);
MapJoin<Map<Lang, CmsItemLang>, Lang, CmsItemLang> mapJoin = page
.joinMap("cmsItemLang");
List<Predicate> predicateList = new ArrayList<Predicate>();
Predicate titlePredicate, urlPredicate;
if ((title != null) && (!(title.isEmpty()))) {
titlePredicate = builder.like(
builder.upper(mapJoin.value().<String> get("metaTitle")),
"%" + title.toUpperCase() + "%");
predicateList.add(titlePredicate);
}
if ((url != null) && (!(url.isEmpty()))) {
urlPredicate = builder.like(
builder.upper(mapJoin.value().<String> get("linkRewrite")),
"%" + url.toUpperCase() + "%");
predicateList.add(urlPredicate);
}
Predicate[] predicates = new Predicate[predicateList.size()];
predicateList.toArray(predicates);
query.where(predicates).distinct(true);
CriteriaQuery<Long> cq = builder.createQuery(Long.class);
cq.select(builder.count(cq.from(entityClass)));
entityManager.createQuery(cq);
cq.where(predicates);
Long count = entityManager.createQuery(cq).getSingleResult();
return count;
} |
Je précise que j'utilise Hibernate 4.2.3 comme implémentation de JPA.
Voici l'erreur que ça me sort :
Code:
1 2
|
org.hibernate.QueryException: could not resolve property: linkRewrite of: com.demkocompany.models.CmsItem [select count(*) from com.demkocompany.models.CmsItem as generatedAlias0 where upper(generatedAlias0.linkRewrite) like :param0] |
je précise que j'ai 2 méthodes une qui me ramène tous les résultat de la recherche et celle ci-dessus qui me est censé me faire le count du nombre total de résultat de la recherche !
Quand je passe un parametre : ici la String correspondant à linkRewrite ... Boom ça pète ...
Quand je regarde la requette génère on dirait que ça fait n'importe quoi ...
Je pense que c'est lié au MapJoin car j'ai d'autre requette similaire sans MapJoin et je n'ai jamais eu de soucis.
Un peu d'aide serait le bienvenu ;)
Merci d'avance