【发布时间】:2020-04-14 01:30:54
【问题描述】:
我们来看一个实体:
class Item{
@Id
Long id;
String name;
org.joda.money.Money price;
}
以及相应的存储库:
interface ItemRepository extends CrudRepository<Item, Long> {
}
是否可以在不手动重写ItemRepository 提供的 SQL 查询的情况下将 Item 保存在单独列中的金额和货币的关系数据库表中?
DDL 可能类似于:
CREATE TABLE ITEM (
ID INTEGER IDENTITY NOT NULL,
NAME VARCHAR(255) NULL,
PRICE_AMOUNT DECIMAL NULL,
PRICE_CURRENCY VARCHAR(3) NULL
);
使用自定义 @WritingConverter 和 @ReadingConverter 将钱存储在单个 VARCHAR 列中是我得到的最接近的方法,但这不是一个选项,因为我需要在数据库级别明确区分金额和货币。
如果这会有所不同,我可以将 joda.money 替换为 javax.money,但我不想引入我自己的自定义类型来处理域层中的资金。
【问题讨论】:
标签: java spring spring-data mapping spring-data-jdbc