假设我有一个表引用另一个表,在本例中“TestScenarios”引用“TestSchemas”。所以每个测试场景都有一个测试模式。 但是,我自动生成了 DAO,当通过 DAO 获取 TestScenario 实例时,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 的 DSL API,您可以使用 implicit joins快速获取任何给定子表的父表,例如
ctx.select(TestScenarios.asterisk(), TestScenarios.TestSchemas().asterisk())
.from(TestScenarios)
.fetch();
还有其他方法,但永远不会像 JPA 提供的那样自动实现“对象图持久化”。 jOOQ 的理念是始终显式地表达每个查询 - 可能会从某些映射糖中获益,但永远不会隐式地自动获取整个对象图。
关于java - JOOQ:如何将外键解析为对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61823906/