2011-01-20 4 views
5

저는 JPA 2 criteria query API를 처음부터 배우기 시작했습니다. 인터넷을 조금 둘러 보았지만 좋은 예제/튜토리얼을 아직 찾지 못했습니다. 누군가 좋은 자습서를 제안 할 수 있습니까? 그리고/또는 코드 작성을 위해 다음과 같은 간단한 쿼리를 도와 줄 수 있습니까?JPA 2 CriteriaQuery Question

public class Transaction { 
    private Account account; 
    ... 
} 

public class Account { 
    private Long id; 
    ... 
} 

가 나는 그것의 계정 ID 주어진 계정에 대한 모든 거래를 유도 할 수있는 쿼리를 코딩해야합니다

나는 그것이 속한 계정에 대한 참조가 클래스라는 트랜잭션이있다. 이 작업을 시도한 것은 분명합니다. 분명히 작동하지 않습니다.

public List<Transaction> findTransactions(Long accountId) {   
    CriteriaBuilder builder = entityManager.getCriteriaBuilder(); 
    CriteriaQuery<Transaction> query = builder.createQuery(Transaction.class); 
    Root<Transaction> transaction = query.from(Transaction.class); 

    // Don't know if I can do "account.id" here 
    query.where(builder.equal(transaction.get("account.id"), accountId)); 
    return entityManager.createQuery(query).getResultList(); 
} 

누군가 올바른 방향으로 나를 가리킬 수 있습니까?

감사합니다. 레쉬

답변

7

해결 방법 : - 위의 코드의 의미를 이해하려면

public List<Transaction> findTransactions(Long accountId) { 
     CriteriaBuilder builder = entityManager.getCriteriaBuilder(); 
     CriteriaQuery<Transaction> query = builder.createQuery(Transaction.class); 
     Root<Transaction> _transaction = query.from(Transaction.class); 

     Path<Account> _account = _transaction.get(Transaction_.account); 
     Path<Long> _accountId = _account.get(Account_.id); 

     query.where(builder.equal(_accountId, accountId)); 
     return entityManager.createQuery(query).getResultList(); 
    } 

읽어 보시기 바랍니다 : - : Hibernate Metamodel Generator Reference Guide

+0

당신이 becomputer06 감사 -이 Dynamic, typesafe queries in JPA 2.0

이해하기/JPA 메타 모델은 읽어 보시기 바랍니다 생성 ! 이것은 매력처럼 작동합니다. hibernate-jpamodelgen에 대한 의존성을 pom에 추가하여 메타 모델을 매우 쉽게 생성 할 수있었습니다. 나는 m2eclipse 플러그인이 아무런 결함없이 그것을 집어 들기를 바라고 있었지만, 지금 당장 그것을하지는 않습니다. 이클립스에서 주석 프로세서를 사용하도록 설정하면 재귀 컴파일 사이클이 진행됩니다. 어쨌든, 기본적인 문제는 해결됩니다. 감사. – Naresh