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語句進行多表查詢,但是需要注意處理好實體對象和數據庫表之間的映射關系。