【发布时间】:2021-09-05 10:40:01
【问题描述】:
在 Spring Data JDBC 中,如果一个实体(例如 Customer)有一个值(例如 Address),如示例 here 中的值有一个反向引用列(表 address 中的列 customer)到 db 架构中的实体:
CREATE TABLE "customer" (
"id" BIGSERIAL NOT NULL,
"name" VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE "address" (
"customer" BIGINT,
"city" VARCHAR(255) NOT NULL
);
这样做的问题是,如果您在一个实体或什至在不同实体中多次使用该 Address 值,则必须为每次使用定义一个额外的列。只有实体的主 ID 存储在这些列中,否则无法区分它是哪个实体。在我的实际实现中,Address 值有五个这样的列:
"order_address" BIGINT, -- backreference for orderAddress to customer id
"service_address" BIGINT, -- backreference for serviceAddress to customer id
"delivery_address" BIGINT, -- backreference for deliveryAddress to customer id
"installation_address" BIGINT, -- backreference for installationAddress to provider_change id
"account_address" BIGINT, -- backreference for accountAddress to payment id
我了解它的工作原理,但我不了解这个反向参考实现背后的想法。那么有人可以解释一下这个问题吗?谢谢!
【问题讨论】:
标签: java spring database-design one-to-one spring-data-jdbc