java - JPA 2 CriteriaQuery 问题

标签 java jpa jpa-2.0 criteriaquery

我刚开始使用 JPA 2 条件查询 API,发现它很难学。环顾了一下网络,但还没有找到很好的例子/教程。有人可以推荐一个好的教程和/或帮助我解决我正在尝试编码的以下简单查询吗?

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

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

要理解以上代码的含义,请阅读:- Dynamic, typesafe queries in JPA 2.0

要了解/生成 JPA 元模型,请阅读:- Hibernate Metamodel Generator Reference Guide

关于java - JPA 2 CriteriaQuery 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4742899/

相关文章:

java - java 二进制文件未找到类异常

java - 由于 @NameQueries 中的错误而无法实例化 LocalContainerEntityManagerFactoryBean?

jpa - 在 PlayFramework 2/Ebean ORM 中使用@OneToOne,其中 child 和 parent 共享相同的主键

java - 为什么Spring在配置时并不总是使用批量插入/更新?

java - 如何查询一个M :N relationship with JPA2?

java - 获取发送到 Servlet 的 GET/POST 的 JSP URI

java - 给定一个二叉树,其中每个节点都有一定的权重。您必须返回二叉树中的最大权重

java - 一个entityManager的范围能达到多远?

java - JPA : not overriding equals() and hashCode() in the entities?

mysql - JPA Hibernate 项目中是否需要 DataSource?