0

我正在尝试在 JPA 中做一些简单的事情。

我有一张桌子

 BusinessId    name
------------  ------ 
     1         Joe
     2         bob

和表产品:

 productID     name
------------  ------ 
     1         Pen
     2         paper

因为它们是一对多关联的,所以我创建了另一个表 businessHasProductID:

 BusinessId    productID
------------  ----------- 
      1            1
      1            2
      2            2

现在我想从 businessHasProductID 中选择 BusinessId 和 productID,其中 BusinessId 的名称 = 'x',productID 的名称 = 'y'。

我构建了表,然后创建了实体类(来自 netBeans 中的向导)。我知道如何获取 Businesses.name = 'x' 的“企业”表,并且我知道如何获取 Products.name = 'y' 的“产品”表。但我想结合这些结果并获取 ID。

我试着做:

Query query = getEntityManager().createQuery("
              SELECT b FROM businessesHasProductID WHERE b.BusinessId IN 
                  (SELECT t0.BusinessId FROM Businesses t0 WHERE t0.BusinessId = 'x')
                AND b.productID IN
                  (SELECT t1.productID FROM Products t1 WHERE t1.productID = 'y')
              ");

那是行不通的。它抱怨 IN 包含无效数据。

4

1 回答 1

2

如果我理解正确,您希望获取[bId, pId]连接表中存在的所有元组,其中业务名称bId为“x”,产品名称pId为“y”。

如果是这样,下面的查询应该做你想做的事:

select business.businessId, product.productId 
from Business business
inner join business.products product
where business.name = 'x'
and product.name = 'y'
于 2012-05-01T09:12:16.867 回答