gpt4 book ai didi

java - 使用 SpringData 存储 map

转载 作者:行者123 更新时间:2023-11-29 17:31:03 26 4
gpt4 key购买 nike

我从 REST 服务获取以下 JSON(170~ 费率)

{
"success":true,
"timestamp":1527944949,
"base":"EUR",
"date":"2018-06-02",
"rates":{
"AED":4.284515,
"AFN":83.084064,
"ALL":124.882747,
....
}
}

我想使用以下类将其保留在我的数据库中

@Entity
@Table(name = "exchange_rate")
public class ExchangeRateEntity {

@Id
@Column(unique = true)
private Date date;

@ElementCollection
@MapKeyColumn(name="name")
@Column(name="value")
@CollectionTable(name="rates", joinColumns=@JoinColumn(name="date"))
private Map<String, Double> rates;

//getters and setters
}

如果我理解正确,它应该用我想要的数据创建新表“费率”?但最终结果是

MySQLSyntaxErrorException: Table 'currency_rate.rates' doesn't exist

其中currency_rate是我的数据库名称

我尝试更改为

@CollectionTable(name="exchange_rate", joinColumns=@JoinColumn(name="date"))

但它给了我

MappingException: Foreign key (FK9s46rfp5jp46vm7ep4cbc020x:exchange_rate [date])) must have same number of columns as the referenced primary key (exchange_rate [date,name])

我完全困惑,如何将 map 存储在数据库中?

最佳答案

  1. 您可以尝试使用 Jackson 框架将 Json 数据转换为 POJO。

示例:

String json = "{ \"color\" : \"Black\", \"type\" : \"BMW\" }";
Car car = objectMapper.readValue(json, Car.class);
  • 只有当“货币汇率”表真实存在时,数据库中的记录才会创建。您可以在应用程序配置文件中写入spring.jpa.generate-ddl=false,然后表将自动创建。

  • 错误MappingException:外键(FK9s4...,这是由于实体关系不正确造成的。但您只写了一个实体。

  • 关于java - 使用 SpringData 存储 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50658352/

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