如何在mysql中存储joda.money

时间:2013-08-22 11:49:14

标签: hibernate joda-money

我有一个具有数据类型joda.money属性的类。 如何将此属性映射到mysql。

我的课程是:

  

@Table(name =“products”)public class Product(){@ Column(name =“name”)   字符串名称; @Column(名字=“钱”)钱钱; }

我正在使用spring hibernate

有谁能说出如何将这个模型存储到mysql中?

1 个答案:

答案 0 :(得分:5)

你在这里有更多选择。

  1. 您可以创建两个代表Joda Money的字段。金额为BigDecimal,货币为String。然后创建瞬态合成域Money并在getter中创建它(参见下面的示例)。
  2. 您可以实现自己的UserType并自行提供序列化/反序列化。请参阅javadoc UserType和documenatation Custom types using org.hibernate.usertype.UserType。请查看CompositeUserType的{​​{3}}实施情况。
  3. 您可以添加this Usertypes项目,该项目为Hibernate提供Joda Money支持(我从未尝试过)

    @Entity @Table(name = "products")
    public class Product {
        @Basic @Column
        private BigDecimal amount;
    
        @Basic @Column
        private String currency;
    
        private transient Money money;
    
            public Money getMoney() {
                if (money == null) {
                    money = Money.of(CurrencyUnit.of(currency), amount);
                }
    
                return money;
            }
    }