我从REST服务中获取了JSON(170~rate)
{
"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
}
如果我理解正确,它应该制作新表&#34; rate&#34;我想要的数据?但最终会以
结束MySQLSyntaxErrorException:表&#39; currency_rate.rates&#39;不存在
其中currency_rate是我的数据库名称
我试图改为
@CollectionTable(name="exchange_rate", joinColumns=@JoinColumn(name="date"))
但它给了我
MappingException:外键 (FK9s46rfp5jp46vm7ep4cbc020x:exchange_rate [date]))必须具有相同的 列数作为引用的主键(exchange_rate [日期,名称])
我完全糊涂了,如何在数据库中存储地图?
答案 0 :(得分:0)
示例:
String json = "{ \"color\" : \"Black\", \"type\" : \"BMW\" }";
Car car = objectMapper.readValue(json, Car.class);
当表'货币汇率'真实存在时,数据库中的记录将仅创建。
您可以在应用程序配置文件中编写spring.jpa.generate-ddl=false
,然后表将自动创建。
由于实体关系不正确导致错误MappingException: Foreign key (FK9s4...
。但是你只写了一个实体。