我正在使用 hibernate 来保存我的数据。这是一个财务应用程序,我很难坚持应用程序最基本的实体“金钱”。我使用的是 JodaMoney,但它是不可变的,所以我无法找到一种好的方法来保留它。如果不将我的钱存入数据库,就没有必要制作应用程序。当我什至无法存储我的对象的状态时,我将如何处理不可变性? 然后我开始创建自己的“货币”(字段为 BigDecimal 金额和 java.util.Currency 货币),我想使用 java.util 的“货币”。但是,它没有公共(public)构造函数,因此 hibernate 无法持久化。 请指导我如何处理这个问题?
EDIT1:最基本类的代码:
@Entity
public class BasicMoney {
@Embedded
@Id
private BigDecimal amount;
@Embedded
private Currency currency;
//getters and setters, other methods
}
现在,当我创建此类的对象并尝试将其存储到数据库中时,它不起作用。 hibernate 抛出:
org.hibernate.InstantiationException: No default constructor for entity: : java.util.Currency
所以,这就是我面临的问题。
最佳答案
你可以使用变通方法
@Embedded
String currency; //store data as a string
public void setCurrency(Currency currency) {
this.currency = currency.getCurrencyCode(); //conversion to an actual currency
}
public Currency getCurrency() {
return Currency.getInstance(currency); //conversion to an actual currency
}
关于java - 如何持久化 java.util.Currency 之类的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29619958/