2015-12-23 52 views
1

我有這個電話與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即使有五個條目符合這裏的某些標準..

我在做什麼克錯了?

+0

如果刪除'.join(...)。on(...) .where(...)'替換爲'.where(Store.STORE.ID.eq(1))'? – Ruslan

+0

@Ruslan原來,這只是我身邊的一個愚蠢的錯誤.. – displayname

回答

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子句中...

+0

*尷尬*是的,這顯然是一個可預防的錯誤在這裏..一遍又一遍地看着它,但我沒有看到錯誤。謝謝你,盧卡斯! – displayname

+0

@StefanFalk:它發生在最好的:) –

相關問題