您在这里有更多选择。
- 您可以创建两个表示Joda的字段
Money
。BigDecimal
金额和String
货币。然后创建瞬态合成场Money
,并在getter中创建它(请参见下面的示例)。 - 您可以自己实现,也可以自己
UserType
提供序列化/反序列化。请参阅javadoc UserType和使用org.hibernate.usertype.UserType的自定义类型。看看这个实现的CompositeUserType
。 - 您可以包括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; } }


