Je suis en train de convertir ce JPA QL en générateur de critères. JBoss 6.0.Erreur de compilation lors de l'utilisation de CriteriaBuilder
"SELECT ba FROM BankAccount ba WHERE ba.balance >= :amt ORDER BY ba.ownerName ASC"
J'ai écrit ce code selon plusieurs tutoriels.
public List<BankAccount> findWithBalance(int amount) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<BankAccount> cq = cb.createQuery(BankAccount.class);
Root<BankAccount> from = cq.from(BankAccount.class);
ParameterExpression<Integer> balance = cb.parameter(Integer.class);
cq.select(from);
Predicate predicate = cb.gt(from.get("balance"), balance);
cq.where(predicate);
cq.orderBy(cb.asc(from.get("ownerName")));
TypedQuery<BankAccount> query = em.createQuery(cq);
return query.getResultList();
}
Mais, je reçois une erreur de compilation dans la ligne:
Predicate predicate = cb.gt(from.get("balance"), balance);
L'erreur est:
The method gt(Expression<? extends Number>, Expression<? extends Number>) in the type CriteriaBuilder is not applicable for the arguments (Path<Object>, ParameterExpression<Integer>)
Pouvez-vous modifier votre message avec le code révisé et donner le message d'erreur que vous obtenez actuellement. Je ne peux pas imaginer que vous obtenez la même erreur si vous utilisez un argument qui est une expression de paramètre. Et faire cela n'est probablement pas ce que vous voulez. –
J'ai mis à jour le code et le nouveau message d'erreur. Ce que je fais vient directement de divers tutoriels. Je ne pense pas que la requête de critères peut être faite dans JBoss 6. – RajV