如何在 Hibernate 中使用 org.jadira.usertype.moneyandcurrency.joda.PersistentMoneyAmountAndCurrency 类型映射 Joda Money?

Ale*_*nko 5 java hibernate joda-money

试试这个:

@Type(type = "org.jadira.usertype.moneyandcurrency.joda.PersistentMoneyAmountAndCurrency")
private org.joda.money.Money price;
Run Code Online (Sandbox Code Playgroud)

得到这个:

org.hibernate.MappingException: property mapping has wrong number of columns:domain.ClientOrderItem.price type: org.jadira.usertype.moneyandcurrency.joda.PersistentMoneyAmountAndCurrency
Run Code Online (Sandbox Code Playgroud)


@Type(type = "org.jadira.usertype.moneyandcurrency.joda.PersistentMoneyAmount",
parameters = {@org.hibernate.annotations.Parameter(name = "currencyCode", value = "USD")})
Run Code Online (Sandbox Code Playgroud)

效果很好,但我想将货币存储在数据库中并能够使用不同的货币。

小智 5

Jadira Usertype Unit Tests有一个工作示例

    @Entity
    @Table(name = "moneyAmountAndCurrency")
    @TypeDef(name = "testjoda_MoneyAmountWithCurrencyType", typeClass = PersistentMoneyAmountAndCurrency.class)
    public class MoneyAmountAndCurrencyHolder implements Serializable {

    private static final long serialVersionUID = -1674416082110551506L;

    @Columns(columns = { @Column(name = "MY_CURRENCY"), @Column(name = "MY_AMOUNT") })
    @Type(type = "testjoda_MoneyAmountWithCurrencyType")
    private Money money;
Run Code Online (Sandbox Code Playgroud)