0

我正在创建 Spring Web 应用程序并尝试使用 Money 数据(javamoney.moneta)添加新实体。这是代码:

@Column(name = FLD_MONEY, unique = false, nullable = true)
private FastMoney money;

private String currencyUnit;
 
public AbstractClient() {
}

public AbstractClient(String clientId, String name, String email, String password, String roles, BigDecimal money, String currencyUnit) {
    this.currencyUnit=currencyUnit;
    this.clientId = clientId;
    this.name = name;
    this.money=FastMoney.of(money, Monetary.getCurrency(this.currencyUnit));
    this.email = email;
    this.password = hashPassword(password);
    this.active=true;
    this.roles=roles;
}

添加到表中的货币列和数据将用 FastMoney 填充。FastMoney 正在从 BigDecimal money 和 String currencyUnit 的构造函数内部创建。

当我尝试使用带有 json body 的 API 端点保存时,我遇到了这个问题:

com.fasterxml.jackson.databind.exc.InvalidDefinitionException:
无法构造 org.javamoney.moneta.FastMoney 的实例(没有创建者,如默认构造函数,存在):没有从数字值反序列化的 int/Int-argument 构造函数/工厂方法( 32)


Here is JSON:

```json
{
   
    "money": 32,
    "currencyUnit": "EUR",
    "clientId": "Berik7182",
    "name": "Berik",
    "email": "berik@gmail.com",
    "password": "Berik123",
    "active": true,
    "roles": "ROLE_USER",
    "location": "Pecs",
    "pwcons": 30.0
    
}

我应该怎么办?

4

1 回答 1

0

我错了,当我用 JSON 写钱时,我想输入整数,但系统认为我在写 FastMoney。所以我只是创建了另一个 int 并更改了名称。

于 2020-07-16T10:43:46.563 回答