首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Data JDBC:复合域类型的转换

Spring Data JDBC:复合域类型的转换
EN

Stack Overflow用户
提问于 2019-09-12 20:24:55
回答 1查看 390关注 0票数 2

在听了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中(目前)是不可能的吗?

EN

回答 1

Stack Overflow用户

发布于 2019-09-13 13:19:39

我认为您正在寻找的是@Embedded注释。它在1.1.x版本中可用。使用它(以及Lombok来保持代码简短),您可以对Period建模,如下所示:

代码语言:javascript
复制
@Value
class Period {
    LocalDate from;
    LocalDate until;
}

并像这样使用它:

代码语言:javascript
复制
@Value
class SpecialOffer {
     String name;
     int rebate;

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

这会将对象映射到具有列NAMEREBATEVALID_FROMVALID_UNTIL的单个表NAME

目前无法仅为单个属性指定Converter。解决这个问题的方法是在值周围创建一个包装器,然后为它创建一个转换器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57906668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档