如何与 Spring Data R2DBC 映射 1:1 关系?

Jue*_*ann 7 spring-data spring-data-r2dbc

我有这些简化的表格

CREATE TABLE address(
    id VARCHAR(36) NOT NULL PRIMARY KEY,
    zip VARCHAR(5) NOT NULL,
    city VARCHAR(32) NOT NULL
)
CREATE TABLE customer(
    id VARCHAR(36) NOT NULL PRIMARY KEY,
    name VARCHAR(32) NOT NULL,
    address_fk VARCHAR(36) NOT NULL,
    FOREIGN KEY (address_fk) REFERENCES address(id)
)
Run Code Online (Sandbox Code Playgroud)

以及这些简化的 Kotlin 类:

data class Address(val id: String, val zip: String, val city: String)
data class Kunde(val id: String?, val name: String, val address: Address)
Run Code Online (Sandbox Code Playgroud)

当我使用@Column(address_fk)该属性时address,我得到一个消息,没有找到从到 的ConverterNotFoundException转换器。而且看起来也不合适。任何提示表示赞赏。StringAddress@MappedCollection@Column

tbu*_*ski 8

R2DBC 中尚不支持关系 https://github.com/spring-projects/spring-data-r2dbc/issues/99

  • 我面临着同样的问题。我做了“实体传输对象”,将实体 A 映射到它,然后在 ETO 对象中,我有 getter 和 setter,我可以从实体 B 或实体 C 获取所需的数据。这个解决方案就像重新发明轮子,但它有效。也许这将有助于解决您的问题。 (4认同)
  • 谢谢。至少现在我知道我必须解决这个问题,例如提交 2 个查询并进行连接,例如“压缩”2 个“Mono”。 (2认同)
  • 也许 [lc-spring-data-r2dbc](https://github.com/lecousin/lc-spring-data-r2dbc) 可以帮助你?它实现了关系(多对多除外),因此看起来比手动执行更容易。 (2认同)