jOOQ:只获得一个结果而不是所有现有条目

时间:2015-12-23 14:37:54

标签: postgresql jooq

我正在与jOOQ进行此次通话:

List<StoreRecord> fetchInto = this.ctx
        .select(Store.STORE.NAME)
        .from(Store.STORE)
        .join(StoreAdminStore.STORE_ADMIN_STORE)
            .on(StoreAdminStore.STORE_ADMIN_STORE.ID.eq(id))
        .where(Store.STORE.ID.eq(StoreAdminStore.STORE_ADMIN_STORE.STORE_ID))
        .fetchInto(StoreRecord.class);

for (StoreRecord store: fetchInto) {
    LOGGER.debug(store.getName());
}

哪个应该复制这个PostreSQL语句:

SELECT
  store.name
FROM store
  JOIN store_admin_store ON store_admin_store.store_admin_id = 1
WHERE store.id = store_admin_store.store_id

然而,jOOQ为我提供了一个仅包含一个 StoreRecord的列表,即使这里有五个条目符合某些条件..

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您的jOOQ查询和您的SQL查询不一样。

jOOQ查询:

-- Is
STORE_ADMIN_STORE.ID.eq(id)

-- Should be
STORE_ADMIN_STORE.STORE_ADMIN_ID.eq(id)

SQL查询:

store_admin_store.store_admin_id = 1

就像现在一样,您的查询只从关系表(ID = 1)返回一行,然后只将单个相关商店加入其中。

除此之外,您应该在ON子句和WHERE子句之间切换谓词。现在,您将连接谓词放在WHERE子句中,而过滤谓词位于ON子句中......