Hibernate 如何为Joda Money&;在每个表的单个字段中存储货币;Jadira用户类型
我使用JodaMoney库和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
@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:还有一个解决方案,我想它不适合您的用例,因为它在注释中硬编码货币