一尘不染

如何在MySQL中存储joda.money

hibernate

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

我的课是:

@Table(name =“ products”)公共类Product(){@Column(name =“
name”)字符串名称;@Column(name =“ money”)金钱金钱;}

我正在使用Spring Hibernate

谁能说出如何将此模型存储到mysql中?


阅读 361

收藏
2020-06-20

共1个答案

一尘不染

您在这里有更多选择。

  1. 您可以创建两个表示Joda的字段MoneyBigDecimal金额和String货币。然后创建瞬态合成场Money,并在getter中创建它(请参见下面的示例)。
  2. 您可以自己实现,也可以自己UserType提供序列化/反序列化。请参阅javadoc UserType使用org.hibernate.usertype.UserType的自定义类型。看看这个实现的CompositeUserType
  3. 您可以包括Jadira Usertypes项目,该项目Money为Hibernate 提供Joda 支持(无论如何我从未尝试过)
        @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;
            }
    }
2020-06-20