java - 具有两个参数的 Hibernate CriteriaBuilder

标签 java sql hibernate jpa jpa-2.0

我在 Hibernate 5.2.1 中使用 Java8,在 MySQL 中使用 JPA2。

我有以下完美运行的查询:

    final EntityManagerFactory entityManagerFactory = entityManager.getEntityManagerFactory();
    final CriteriaBuilder criteriaBuilder = entityManagerFactory.getCriteriaBuilder();
    CriteriaQuery<Rating> criteria = criteriaBuilder.createQuery(Rating.class);
    Root<Rating> root = criteria.from(Rating.class);
    ParameterExpression<Job> paramJob = criteriaBuilder.parameter(Job.class);

    criteria.select(root).where(criteriaBuilder.equal(root.get("job"), paramJob));

如您所见,查询有一个参数paramJob。我想添加第二个参数:

    ParameterExpression<Person> paramPerson = criteriaBuilder.parameter(Person.class);

问题

如何修改以下行以适应第二个参数?

criteria.select(root).where(criteriaBuilder.equal(root.get("job"), paramJob));

我可以添加第二行吗:

criteria.select(root).where(criteriaBuilder.equal(root.get("person"), paramPerson));

谢谢

最佳答案

试试这个:

criteria.select(root).where(
    criteriaBuilder.equal(root.get("job"), paramJob),
    criteriaBuilder.equal(root.get("person"), paramPerson)
);

关于java - 具有两个参数的 Hibernate CriteriaBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44197230/

相关文章:

java - 能够执行由另一个线程发送的特定作业的线程的任何可用设计模式?

sql - 使用select语句编写Sql插入语句

mysql - 使用 JPA/Spring/Hibernate 自动截断字符串列的方法?

java - 使用实体管理器进行 SQL 查询

java - hibernate 和 SQL Server : Timestamp format must be yyyy-mm-dd hh:mm:ss

java - 让一个简单的 envers 示例工作起来很困难 : problem #34

java - Java Play框架可以在内存中存储超过100KB的请求而不写入磁盘吗

Java 从文本文件中读取前 2 行

java - 空对象引用上的 RecyclerViewAdapter.notifyDataSetChanged()

mysql - SQL 从具有相同列的行中选择最后一行