簡體   English   中英

如何使用帶有聯接的查詢從jOOQ中僅選擇一個表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM