[英]How to select from only one table in jOOQ using a query with a join?
我在jOOQ中有以下查詢:
factory()
.select()
.from(PERSON)
.join(ENDUSER).on(ENDUSER.PERSON_FK.equal(PERSON.ID))
.where(ENDUSER.ID.equal(userId))
.fetchOne();
該查詢向我返回一條記錄,其中包含PERSON和ENDUSER的所有列,但我只想要PERSON的列(這就是為什么我放.from(PERSON)
而.from(PERSON, ENDUSER)
)。 我知道那沒關系,但是我不希望返回不必要的字段。
您可以通過Table.fields()
方法訪問PERSON
的字段:
factory()
.select(PERSON.fields()) // Or getFields() in jOOQ 2.x
.from(PERSON)
.join(ENDUSER)...
這和寫作差不多
SELECT PERSON.*
FROM PERSON
JOIN ENDUSER ...
另一個選擇是實際上逐一列出人的所有字段
盧卡斯的答案正是我想要的。 您還可以使用into()
方法僅針對您關心的表(而不是通用的Record
類型)獲取強類型的響應對象:
PersonRecord record = factory()
.select()
.from(PERSON)
.join(ENDUSER).on(ENDUSER.PERSON_FK.equal(PERSON.ID))
.where(ENDUSER.ID.equal(userId))
.fetchOne()
.into(PERSON);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.