让我们采取以下实体:
class Item{
@Id
Long id;
String name;
org.joda.money.Money price;
}
和相应的存储库:
interface ItemRepository extends CrudRepository<Item, Long> {
}
是否可以在不手动重写提供的 SQL 查询的情况下将 Item 保存在单独的列中具有金额和货币的关系数据库表中ItemRepository
?
DDL 可能类似于:
CREATE TABLE ITEM (
ID INTEGER IDENTITY NOT NULL,
NAME VARCHAR(255) NULL,
PRICE_AMOUNT DECIMAL NULL,
PRICE_CURRENCY VARCHAR(3) NULL
);
使用自定义将钱存储在单个VARCHAR
列中@WritingConverter
,@ReadingConverter
这是我得到的最接近的,但这不是一个选项,因为我需要在数据库级别明确区分金额和货币。
joda.money
如果这会有所作为,我可以替换javax.money
,但是我不想引入我自己的自定义类型来处理域层中的资金。