使用SpringData存储地图的java
我从REST服务获得以下JSON(170%费率)
{
"success":true,
"timestamp":1527944949,
"base":"EUR",
"date":"2018-06-02",
"rates":{
"AED":4.284515,
"AFN":83.084064,
"ALL":124.882747,
....
}
}
我想在我的DB上用下面的类来保存它
@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
}
如果我理解正确,它应该用我想要的数据创建新的表“rates”?但结果是
MySQLSyntaxErrorException: Table 'currency_rate.rates' doesn't exist
其中货币汇率是我的db名称
我试着换成
@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])
我完全搞不懂,如何在数据库中存储地图
# 1 楼答案
例如:
当“货币汇率”表实际存在时,数据库中的记录将仅创建thwn。 您可以在应用程序配置文件中写入
spring.jpa.generate-ddl=false
,然后表将自动创建错误
MappingException: Foreign key (FK9s4...
由于实体关系不正确而导致失败。但你只写了一个实体