JPA 2 CriteriaQuery Question
I am just starting out with JPA 2 criteria query API and finding it tough to learn. Looked around the net a bit, but haven't found good examples/tutorials yet. Can someone suggest a good tutorial and/or help me with the following simple query I am trying to code?
I have a class called Transaction that has a reference to the Account that it belongs:
public class Transaction {
private Account account;
...
}
publi开发者_StackOverflow社区c class Account {
private Long id;
...
}
I need to code a query that gets all the transactions for an account given its account id. Here's my attempt at doing this (which obviously doesn't work):
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();
}
Can someone point me in the right direction?
Thanks. Naresh
Solution:-
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();
}
To understand the meaning of above code please read:- Dynamic, typesafe queries in JPA 2.0
And to understand/generate JPA Metamodel please read:- Hibernate Metamodel Generator Reference Guide
精彩评论