13

我在 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))。我知道这无关紧要,但我不希望返回不必要的字段。

4

2 回答 2

14

PERSON您可以通过以下方法访问字段Table.fields()

factory()
.select(PERSON.fields()) // Or getFields() in jOOQ 2.x
.from(PERSON)
.join(ENDUSER)...

这和写的差不多

SELECT PERSON.*
FROM PERSON
JOIN ENDUSER ...

另一种选择是实际逐个列出人员的所有字段

于 2012-12-28T19:13:55.587 回答
8

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);
于 2013-12-17T00:53:21.837 回答