JPA可以通过使用JPQL查询语言或者使用Criteria API实现多表查询。下面分别介绍这两种方法:
String jpql = "SELECT c FROM Customer c JOIN c.orders o WHERE o.totalPrice > :price";
List<Customer> customers = entityManager.createQuery(jpql, Customer.class)
.setParameter("price", 100)
.getResultList();
上述代码中,使用了JOIN关键字将Customer表和Order表关联起来,并使用WHERE条件筛选出totalPrice大于指定值的数据。
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Customer> query = cb.createQuery(Customer.class);
Root<Customer> customer = query.from(Customer.class);
Join<Customer, Order> order = customer.join("orders");
query.select(customer)
.where(cb.greaterThan(order.get("totalPrice"), 100));
List<Customer> customers = entityManager.createQuery(query).getResultList();
上述代码中,使用join()方法将Customer表和Order表关联起来,并使用where()方法筛选出totalPrice大于指定值的数据。
需要注意的是,以上示例中的Customer和Order是实体对象,在具体代码中需要根据实际情况进行替换。另外,还可以使用原生的SQL语句进行多表查询,但是需要注意处理好实体对象和数据库表之间的映射关系。