Java JPA2标准查询问题

Java JPA2标准查询问题,java,jpa,jpa-2.0,criteriaquery,Java,Jpa,Jpa 2.0,Criteriaquery,我刚开始使用JPA2标准查询API,发现它很难学习。浏览了一下网络,但还没有找到好的示例/教程。有人能推荐一个好的教程和/或帮助我编写以下简单的查询吗 我有一个名为Transaction的类,它引用了它所属的帐户: public class Transaction { private Account account; ... } public class Account { private Long id; ... } 我需要编写一个查询代码,以获取给定帐户i

我刚开始使用JPA2标准查询API,发现它很难学习。浏览了一下网络,但还没有找到好的示例/教程。有人能推荐一个好的教程和/或帮助我编写以下简单的查询吗

我有一个名为Transaction的类,它引用了它所属的帐户:

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

public class Account {
    private Long id;
    ...
}
我需要编写一个查询代码,以获取给定帐户id的帐户的所有事务。下面是我的尝试(显然不起作用):

public List findTransactions(长帐户ID){
CriteriaBuilder=entityManager.getCriteriaBuilder();
CriteriaQuery=builder.createQuery(Transaction.class);
根事务=query.from(transaction.class);
//不知道我是否可以在这里做“account.id”
query.where(builder.equal(transaction.get(“account.id”),accountId));
返回entityManager.createQuery(query.getResultList();
}
有人能给我指出正确的方向吗

谢谢。 Naresh解决方案:-

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();
    }
public List findTransactions(长帐户ID){
CriteriaBuilder=entityManager.getCriteriaBuilder();
CriteriaQuery=builder.createQuery(Transaction.class);
Root\u transaction=query.from(transaction.class);
路径


要理解/生成JPA元模型,请阅读:-

谢谢你,becomputer06!这很有魅力。通过向pom中添加hibernate jpamodelgen的依赖项,我可以非常轻松地生成元模型。我希望m2eclipse插件能够无任何故障地获取元模型,但它现在没有这样做。如果我启用eclipse中的注释处理器我进入了一个递归编译周期!不管怎样,基本问题已经解决了。谢谢。
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();
    }