java - 如何持久化 java.util.Currency 之类的类?

标签 java hibernate persistence

我正在使用 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/

相关文章:

java - 如何使用 UUID 作为 Hibernate 实体的主键?

arrays - 无法在 Swift 中编译 array.writeToFile;但在 ObjC 中没关系

javascript - 当应用程序通过实时服务器运行时,localStorage 是否应该保留?

java - 当我在 Thread 对象上调用 run() 时,为什么我的 Java 程序会泄漏内存?

java - 强制执行以避免循环依赖

java - 迷失在日期和时区

java - 使用hibernate显示数据库中的数据

validation - 最好的 Java 电子邮件地址验证方法是什么?

java - 在 Java 的 Import 语句中使用 *

java - hibernate 性能问题,坚持一个接一个还是批量?