假设我有三个实体:客户、产品和订单。每个订单都有一个与客户的多对一关联和与产品的多对一关联。关联分别从订单到客户和产品是单向的。所以数据库看起来像:
Customer
+----+-----+
| ID | ... |
+----+-----+
Product
+----+-----+
| ID | ... |
+----+-----+
Order
+----+-------------+------------+-----+
| ID | CUSTOMER_ID | PRODUCT_ID | ... |
+----+-------------+------------+-----+
现在我想编写一个 NamedQuery 来检索订购特定产品的所有客户。我可以在查询中引用 Customer 对象而不在 Customer 和 Order 之间执行连接吗?我可以写类似的东西:
@NamedQuery(
name = "GetCustomersByProduct",
query = "SELECT o.customer"
"FROM Order o "+
"WHERE o.productId = :productId"
)
或者是否有必要执行连接?最好的方法是什么?