Java 使用SpringData存储地图
我从REST服务获得以下JSON(170%费率) 我想在我的DB上用下面的类来保存它Java 使用SpringData存储地图,java,mysql,spring,spring-data,Java,Mysql,Spring,Spring Data,我从REST服务获得以下JSON(170%费率) 我想在我的DB上用下面的类来保存它 @Entity @Table(name = "exchange_rate") public class ExchangeRateEntity { @Id @Column(unique = true) private Date date; @ElementCollection @MapKeyColumn(name="name") @Column(name="va
@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
}
但它给了我
MappingException:外键
(FK9s46rfp5jp46vm7ep4cbc020x:汇率[日期])必须具有相同的
作为引用主键的列数(汇率
[日期、姓名])
我完全搞不懂,如何在数据库中存储地图
String json = "{ \"color\" : \"Black\", \"type\" : \"BMW\" }";
Car car = objectMapper.readValue(json, Car.class);
spring.jpa.generateddl=false
,然后表将自动创建MappingException:外键(FK9s4…
由于实体关系不正确,因此将其删除。但您只编写了一个实体错误很明显:您没有创建存储速率所需的数据库表(rates)。只需这样做,就可以将其序列化为json。
@CollectionTable(name="exchange_rate", joinColumns=@JoinColumn(name="date"))
String json = "{ \"color\" : \"Black\", \"type\" : \"BMW\" }";
Car car = objectMapper.readValue(json, Car.class);