我正在尝试使用 Hibernate 标准 api 执行子查询,但无法完全弄清楚如何去做。假设有 2 个表,SHOPS 和 EMPLOYEES,其中 SHOPS 包含所有商店信息,EMPLOYEES 是所有商店中所有员工的大表(未设置外键)。我正在尝试编写一个查询,该查询从 SHOPS 表中检索商店 ID 和地址,然后通过连接和 EMPLOYEES 表中的计数来检索商店中的雇员人数。像这样的东西:
SELECT a.SHOP_ID, a.SHOP_ADDRESS, (SELECT COUNT(*) FROM
SHOP_EMPLOYEES b WHERE b.SHOP_ID = a.SHOP_ID) as NUM_EMPLOYEES FROM <--Problem here
SHOPS a
WHERE
QUERY_STATUS ='Open'
所以我有一个 Java 类 Shop,其中包含 shopId、shopAddres、numEmployees 和类似的员工。
我的子查询:
DetachedCriteria subquery = DetachedCriteria.forClass(
Employee.class, "b").add(
Property.forName("b.shopId").eqProperty("a.shopId"))
.setProjection(
Projections.projectionList().add(
Projections.rowCount()));
主要标准查询如下:
List shopListRet = session.createCriteria(Shop.class, "a")
.setProjection(
Projections.projectionList().add(
Projections.property("a.shopId"))).add(Subquery..."DONT KNOW WHAT SHOULD COME HERE").list();
我的问题是:
- 如何将 Detached 查询关联为子查询以将计数结果收集到 Shop 类中的类变量 numEmployees 中?
谢谢-J