gpt4 book ai didi

java - Spring 数据 JDBC : Conversion of compound domain types

转载 作者:行者123 更新时间:2023-11-30 10:00:33 34 4
gpt4 key购买 nike

在听了 Jens Schauder 关于 Spring Data JDBC 和 Doamin 驱动设计的精彩演讲后(作为 AFOL,我喜欢你的例子;-)我做了一些实验,但很快就被我的域类型卡住了。当然,我需要编写自定义 JDBC 转换器,例如将 TelephoneNumber 映射到 String 并返回,但是我如何处理更复杂的类型,例如以 LocalDate 作为开始日期和 LocalDate 作为结束日期的句点。或带有街道、门牌号、邮政编码、城市...的地址。

我无法为这些类型添加注释,因为根据它们的用途,它们可能具有不同的含义,例如发票地址与送货地址。

使用 JPA/Hibernate 可以使用 @Columns@AttributeOverrides 或实现复合 hibernate 用户类型,但在 Spring Data JDBC 中只能找到简单的转换器。

我是否遗漏了什么,或者这是否(还)不能通过 Spring Data JDBC 实现?

最佳答案

我认为您正在寻找的是 @Embedded 注释。它在 1.1.x 版本中可用。使用它(和 Lombok 来保持代码简短)你可以像这样模拟一个 Period:

@Value
class Period {
LocalDate from;
LocalDate until;
}

然后像这样使用它:

@Value
class SpecialOffer {
String name;
int rebate;

@Embedded(onEmpty = OnEmpty.USE_EMPTY, prefix="valid_")
Period valid;
}

这会将对象映射到单个表SPECIAL_OFFER,其中包含列NAMEREBATEVALID_FROMVALID_UNTIL

目前无法为单个属性指定 Converter。解决这个问题的方法是围绕该值创建一个包装器并为此创建一个转换器。

关于java - Spring 数据 JDBC : Conversion of compound domain types,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57906668/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com