我在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)
的原因)。
我知道这并不重要,但我不希望返回不必要的字段。
答案 0 :(得分:14)
您可以通过PERSON
方法访问Table.fields()
中的字段:
factory()
.select(PERSON.fields()) // Or getFields() in jOOQ 2.x
.from(PERSON)
.join(ENDUSER)...
这与编写
大致相同SELECT PERSON.*
FROM PERSON
JOIN ENDUSER ...
另一种选择是实际列出人员中的所有字段
答案 1 :(得分:7)
Lukas的答案正是我所寻找的。您还可以使用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);