我在jOOQ中有以下查询:
factory()
.select()
.from(PERSON)
.join(ENDUSER).on(ENDUSER.PERSON_FK.equal(PERSON.ID))
.where(ENDUSER.ID.equal(userId))
.fetchOne();
Run Code Online (Sandbox Code Playgroud)
这个查询返回给我一个记录,包含PERSON和ENDUSER的所有列,但我只想要PERSON的列(这就是我放弃的原因.from(PERSON)而不是.from(PERSON, ENDUSER)).我知道这并不重要,但我不希望返回不必要的字段.
Luk*_*der 14
您可以PERSON通过以下Table.fields()方法访问字段:
factory()
.select(PERSON.fields()) // Or getFields() in jOOQ 2.x
.from(PERSON)
.join(ENDUSER)...
Run Code Online (Sandbox Code Playgroud)
这与写作大致相同
SELECT PERSON.*
FROM PERSON
JOIN ENDUSER ...
Run Code Online (Sandbox Code Playgroud)
另一个选择是实际列出人的所有字段
卢卡斯的答案正是我所寻找的.您还可以使用该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);
Run Code Online (Sandbox Code Playgroud)