2011-01-20 9 views
5

JPA 2基準のクエリAPIを使い始め、習得するのは難しいです。ネットの周りを少し見ましたが、まだ良い例/チュートリアルは見つかりませんでした。誰かが良いチュートリアルを提案したり、コード化しようとしている次の簡単なクエリで助けてくれますか?JPA 2 CriteriaQuery質問

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(); 
} 

誰かが正しい方向に向いていますか?

ありがとうございました。上記のコードの意味を理解する

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(); 
    } 

お読みください: - - : ネアシュ

答えて

7

ソリューションDynamic, typesafe queries in JPA 2.0

をそして生成/ JPAメタモデルを理解するために読んでください: - Hibernate Metamodel Generator Reference Guide

+0

はあなたにbecomputer06ありがとう!これは魅力のように機能します。私は、hibernate-jpamodelgenへの依存をpomに追加することで、非常に簡単にメタモデルを生成することができました。私は、m2eclipseプラグインが何の不具合もなくそれを拾うことを望んでいましたが、今はそれをやっていません。 Eclipseで注釈プロセッサを有効にすると、再帰的なコンパイルサイクルに入ります!とにかく、基本的な問題は解決されます。ありがとう。 – Naresh