Hibernate 如何为Joda Money&;在每个表的单个字段中存储货币;Jadira用户类型

Hibernate 如何为Joda Money&;在每个表的单个字段中存储货币;Jadira用户类型,hibernate,joda-money,Hibernate,Joda Money,我使用JodaMoney库和Jadira用户类型来存储货币值。我希望能够在每个表中存储一种货币,而不需要那么多字段 有没有办法将货币映射到同一字段?这不起作用,因为它抱怨我不能混合可插入和可更新 @Columns(columns = {@Column(name = "currency"), @Column(name = "productsAmount")}) @Type(type = "org.jadira.usertype.moneyandcurrency.joda.Persis

我使用JodaMoney库和Jadira用户类型来存储货币值。我希望能够在每个表中存储一种货币,而不需要那么多字段

有没有办法将货币映射到同一字段?这不起作用,因为它抱怨我不能混合可插入和可更新

    @Columns(columns = {@Column(name = "currency"), @Column(name = "productsAmount")})
   @Type(type = "org.jadira.usertype.moneyandcurrency.joda.PersistentMoneyAmountAndCurrency")
    private Money totalProducts;

    @Columns(columns = { @Column(name = "currency", insertable = false, updatable= false), @Column(name = "orderTotalAmount") })
    @Type(type = "org.jadira.usertype.moneyandcurrency.joda.PersistentMoneyAmountAndCurrency")
    private Money orderTotalAmount; 

我也用
org.jadira.usertype.moneyandcurrency.moneta.PersistentMoneyAmountAndCurrency
进行了尝试,得到了与您相同的错误:

org.hibernate.AnnotationException: Mixing insertable and non insertable columns in a property is not allowed
在中已经提出了一个快速而肮脏的解决方案,更具体地说是第一点:他建议使用瞬态场,而不是使用Jadira

我自己并不认为这种方法是一种长期解决方案,因此我将研究如何实现
UserType
,正如同一答案的第二点所建议的那样

如果我有一个有效的实现,我会把它放回这里


ps:还有一个解决方案,我想它不适合您的用例,因为它在注释中对货币进行了硬编码。

我用
org.jadira.usertype.moneyandcurrency.moneta.PersistentMoneyAmountAndCurrency
尝试了这个方法,得到了与您相同的错误:

org.hibernate.AnnotationException: Mixing insertable and non insertable columns in a property is not allowed
在中已经提出了一个快速而肮脏的解决方案,更具体地说是第一点:他建议使用瞬态场,而不是使用Jadira

我自己并不认为这种方法是一种长期解决方案,因此我将研究如何实现
UserType
,正如同一答案的第二点所建议的那样

如果我有一个有效的实现,我会把它放回这里

ps:还有一个解决方案,我想它不适合您的用例,因为它在注释中硬编码货币