在Spring数据JDBC中使用多对一关系



注意:我知道这个类似的SO问题,但它被接受的答案对我没有帮助。


我的模式中有以下SQL表:

CREATE TABLE IF NOT EXISTS addresses
(
id  VARCHAR(60) DEFAULT RANDOM_UUID() PRIMARY KEY,
street VARCHAR(100) NOT NULL,
province VARCHAR(20) NOT NULL,
country VARCHAR(20) NOT NULL,
zip VARCHAR(20) NOT NULL,
phone VARCHAR(20),
purchase_order VARCHAR(6) NOT NULL
);
CREATE TABLE IF NOT EXISTS purchase_orders
(
id VARCHAR(60) DEFAULT RANDOM_UUID() PRIMARY KEY,
last_name VARCHAR(60) NOT NULL,
first_name VARCHAR(60) NOT NULL,
status VARCHAR(60) NOT NULL,
address VARCHAR(60) NOT NULL,
FOREIGN KEY (address) REFERENCES addresses(id)
);

我有以下Kotlin数据类:

@Table("PURCHASE_ORDERS")
data class PurchaseOrder(
@Id val id: String?,
val lastName: String,
val firstName: String,
val status: Status,
val address: Address
) {
enum class Status {
PENDING,
APPROVED,
REJECTED
}
}
@Table("ADDRESSES")
data class Address(
@Id val id: String?,
val street: String,
val province: String,
val country: String,
val zip: String,
val phone: String?,
)

每个PurchaseOrder具有一个Address,但是一个Address可以具有多个PurchaseOrders。

我知道SpringDataJDBC不支持这种类型的关系,那么我该如何重构我的表或类以使其真正工作呢?我看到了这个SO的答案,但它对我没有多大帮助,因为它提到的链接只描述了我所能描述的多对多的关系。

@Table注释不是Spring JDBC的一部分。

如果您要使用SpringJDBC,而不是JPA或ORM框架,那么您可以为这两个表中的每一个表编写INSERT。确保启用了@Transaction支持,这样,如果一个插入失败,它会回滚两个insert。

最新更新