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 - JPA 级联更新/删除 OneToMany

java - 突破碰撞检测

Javascript 变量应该保留与之前声明和初始化的变量相同的值

Java "ajp-9009-AsyncTimeout"java.lang.OutOfMemoryError : Java heap space Errors 错误

android - 在应用程序退出时保存 Android 应用程序数据

ios - UserDefaults 自动登录不起作用

java - 使用 Java Streams 将 double 映射汇总为聚合的 BigDecimal

java - 使用 JPA 从 child 获取 parent

java - 为什么在 hibernate 中不鼓励复合键?

spring - 如何在 HibernateJpaAutoConfiguration 中指定 packagesToScan?