在听了Jens Schauder关于Spring Data、JDBC和Doamin-Driven Design的精彩演讲后(作为一个AFOL,我喜欢你的例子;-)我尝试了一下,但很快就被我的域类型卡住了。当然,我需要编写自定义的JDBC转换器,例如,将TelephoneNumber映射到字符串,然后再映射回来,但是我如何处理更复杂的类型,比如以LocalDate作为开始日期,LocalDate作为结束日期的period。或者地址有街道门牌号邮政编码城市..。
我不能向这些类型添加注释,因为根据它们的用途,它们可以有不同的含义,例如发票地址和送货地址。
使用JPA/Hibernate a可以使用@Columns或@AttributeOverrides或实现复合的hibernate用户类型,但在Spring Data JDBC中只能找到简单的转换器。
我是否遗漏了什么,或者这在Spring Data JDBC中(目前)是不可能的吗?
发布于 2019-09-13 13:19:39
我认为您正在寻找的是@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;
}这会将对象映射到具有列NAME、REBATE、VALID_FROM、VALID_UNTIL的单个表NAME
目前无法仅为单个属性指定Converter。解决这个问题的方法是在值周围创建一个包装器,然后为它创建一个转换器。
https://stackoverflow.com/questions/57906668
复制相似问题