2012-04-14 176 views
0

我對jpa有點新鮮。我創建了一些簡單的查詢。但是現在我有一個簡單的查詢問題。我有一個實體付款與3列(Id,金額1,金額2)。 現在我想從付款找到所有的行,其中Amount1 + AMOUNT2大於somevalue.I想是這樣:jpa列上的算術運算查詢

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

但它無法正常工作。我也試過使用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

是實體正確定義。因爲我可以毫無問題地從單列中獲取值。您創建的查詢與我的查詢相同。是不是?但那個不起作用。我在付款p選擇p時收到錯誤EJB事務卷展欄WHERE p.Amount1 + p.Amount2> 200 – Jeena 2012-04-14 13:45:38

+1

事務回滾?除了簡單的選擇之外,你還在做其他方法嗎?編輯您的問題以包括堆棧跟蹤和任何其他正在使用相同方法執行的JPA操作。 – Perception 2012-04-14 13:50:21

+0

哦,那是我的錯。我正在使用查詢的結果而不檢查它是否爲null。但仍然沒有得到任何結果與我張貼在第一篇文章的查詢。 – Jeena 2012-04-14 14:01:56