Java JOOQ:如何将外键解析为对象?

Java JOOQ:如何将外键解析为对象?,java,database,orm,jooq,Java,Database,Orm,Jooq,假设我有一个引用另一个表的表,在本例中,“TestScenarios”引用“TestSchema”。因此,每个测试场景都有一个测试模式。 但是,当通过DAO获取TestScenario实例时,我自动生成了DAO,TestSchema字段是一个整数,而不是TestSchema对象。如何让JOOQ将外键直接解析为具有一定深度的对象 CREATE TABLE "TestScenarios" ( id integer DEFAULT nextval('"TestSce

假设我有一个引用另一个表的表,在本例中,“TestScenarios”引用“TestSchema”。因此,每个测试场景都有一个测试模式。 但是,当通过DAO获取TestScenario实例时,我自动生成了DAO,TestSchema字段是一个整数,而不是TestSchema对象。如何让JOOQ将外键直接解析为具有一定深度的对象

CREATE TABLE "TestScenarios"
(
   id              integer   DEFAULT nextval('"TestScenarios_id_seq"'::regclass) NOT NULL,
   name            varchar,
   version         bigint,
   "testSchema"    integer,
);

ALTER TABLE "TestScenarios"
   ADD CONSTRAINT "TestScenarios_pkey"
   PRIMARY KEY (id);

ALTER TABLE "TestScenarios"
  ADD CONSTRAINT "testSchemaFk" FOREIGN KEY ("testSchema")
  REFERENCES "TestSchemas" (id)
  ON UPDATE NO ACTION
  ON DELETE NO ACTION;

COMMIT;

DAO没有这样的特性,但是通过jOOQ的DSLAPI,您可以使用它来快速获取任何给定子表的父表,例如

ctx.select(TestScenarios.asterisk()、TestScenarios.TestSchemas().asterisk())
.from(测试场景)
.fetch();
还有其他的方法,但是永远不会像JPA提供的那样自动实现“对象图持久化”。jOOQ的理念是始终显式地表达每个查询——也许可以从一些映射糖中获益,但决不隐式地自动获取整个对象图