このJPA QLを条件ビルダに変換しようとしています。 JBoss 6.0。CriteriaBuilderを使用しているときにコンパイルエラー
"SELECT ba FROM BankAccount ba WHERE ba.balance >= :amt ORDER BY ba.ownerName ASC"
私はいくつかのチュートリアルに従ってこのコードを書いています。
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();
}
しかし、私はラインでのコンパイルエラーを取得しています:
Predicate predicate = cb.gt(from.get("balance"), balance);
エラーは次のとおりです。
The method gt(Expression<? extends Number>, Expression<? extends Number>) in the type CriteriaBuilder is not applicable for the arguments (Path<Object>, ParameterExpression<Integer>)
あなたは、改訂コードであなたの投稿を編集して、現在取得中のエラーメッセージを表示できますか? ParameterExpressionであるargを使用している場合、同じエラーが発生しているとは想像もできません。また、それはおそらくあなたが望むものではありません。 –
コードと新しいエラーメッセージが更新されました。私がやっていることは、さまざまなチュートリアルからまっすぐです。私は基準のクエリがJBoss 6でできるとは思わない。 – RajV