2012-04-14 10 views
0

私は若干jpaが新しいです。私はいくつかの簡単なクエリを作成しました。しかし、今私は単純なクエリに問題があります。私は、3列(ID、Amount1、Amount2)のエンティティ支払いを持っています。jpa列の算術演算の問い合わせ

Query query = getEntityManager().createQuery(
    "Select p from Payment p WHERE p.Amount1 + p.Amount2 >' " + someamount +" ' "); 

しかし、それは動作していない: は、今私はAmount1 + AMOUNT2がsomevalue.Iのようなものを試してみましたよりも大きい支払いからすべての行を見つけたいです。私もSUMを使ってみましたが、それはただ一つの列です。 誰も私にこれを手伝ってもらえますか?おかげさまで

答えて

0

エンティティが適切に定義されていると仮定すると、次のクエリではうまく動作するはずです:

final BigDecimal threshold = BigDecimal.valueOf(1000); 
TypedQuery<Payment> query = getEntityManager().createQuery(
     "SELECT p FROM Payment p WHERE p.Amount1 + p.Amount2> :value", 
     Payment.class); 
query.setParameter("value", threshold); 
List<Payment> results = query.getResultList(); 
+0

はいエンティティが適切に定義されています。なぜなら私は単一列から値を得ることができるからです。あなたが作成したクエリは、私が持っているものと同じです。そうじゃない?しかし、それは働いていません。私はエラーを取得するEJBトランザクションのロールアウトは、pからpを選択します。p.Amount1 + p.Amount2> 200 – Jeena

+1

トランザクションロールバック?単純な選択とは別に、あなたの方法で何か他のことをしていますか?質問を編集して、スタックトレースと他のJPA操作を同じ方法で実行します。 – Perception

+0

ああ、それは私のところで間違っていた。私は、そのヌルかどうかをチェックせずにクエリの結果をさらに使用していました。しかし、まだ私は最初の投稿に投稿されたクエリで何の結果も得られません。 – Jeena