【发布时间】:2016-02-16 01:38:18
【问题描述】:
我对 JPA 很陌生,并且使用 Java 作为 REST 服务的后端,我想将 JSON 存储到数据库中,并想检查什么是最好的方法。请让我知道,以防我走“长路”。
(我正在使用 Spring)
我的数据:
{
frequency: "Week"
isGoalOrMore: "true"
name: "Develop"
targetValue: "5"
type: "Average"
}
习惯.java
@Entity
@Table(name = "habits")
public class Habit {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "id_habit_type")
private HabitType type;
private boolean isGoalOrMore; //basically means, achieve goal or do more
private double targetValue;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "id_frequency")
private Frequency frequency;
//getters and setters
}
HabitType.java
@Entity
@Table(name = "habits_type")
public class HabitType {
@Id
private Long id;
private String description;
}
数据库模型(mysql)
habits
--id
--name
--id_frequency
--id_habit_type
habits_type
--id
--description
问题
当我尝试保存这些数据时,我收到如下错误:
com.fasterxml.jackson.databind.JsonMappingException: Can not instantiate value of type [simple type, class com.tiperapp.model.HabitType] from String value ('Average'); no single-String constructor/factory method
我该如何解决?
通过阅读一些主题,一种选择是编写 JSON 反序列化器。他们通过修复 JPA 解决了其他情况。 我想知道哪个会被推荐..你们能帮我如何反序列化这个,最好的方法吗?
【问题讨论】: