2012-04-14 2 views
0

나는 약간 새로운 jpa이다. 몇 가지 간단한 쿼리를 만들었습니다. 하지만 지금은 간단한 쿼리에 문제가 있습니다. 3 열 (Id, Amount1, Amount2)이있는 엔티티 지불이 있습니다. 지금 내가 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

예 실체가 제대로 정의된다. 아무 문제없이 단일 열에서 값을 얻을 수 있기 때문입니다. 당신이 만든 질의는 내가 가진 것과 같습니다. 그렇지 않아 ?? 하지만 그 중 하나가 작동하지 않습니다. 오류가 발생 EJB 트랜잭션 롤아웃 지불 p 선택 p WHERE p.Amount1 + p.Amount2> 200 – Jeena

+1

트랜잭션 롤백? 당신은 간단한 선택과는 별도로 당신의 방법으로 다른 것을하고 있습니까? 질문을 편집하여 동일한 방법으로 수행되는 스택 추적 및 다른 JPA 작업을 포함시킵니다. – Perception

+0

오, 그건 내 잘못 이었어. 그 null 여부를 확인하지 않고 쿼리 결과를 더 사용했습니다. 하지만 여전히 첫 번째 게시물에 게시 된 쿼리로 어떤 결과도 얻지 못했습니다. – Jeena