gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 01:33:31 27 4
gpt4 key购买 nike

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com