1
重點解串器下面是我的項目MappingJackson2HttpMessageConverter找不到(圖)類型
import java.util.Iterator; import java.util.Map; import java.util.Set; @Entity @Table(name="training") public class Training { @Id @GeneratedValue private long id; private String topic; @OneToMany(mappedBy="training") private Set sessions = new HashSet(); public Training(){ } public Training(String topic, TransitionLevel level, Set sessions) { this.topic = topic; this.level = level; this.sessions = sessions; } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getTopic() { return topic; } public void setTopic(String topic) { this.topic = topic; } public Set getSessions() { return sessions; } public void setSessions(Set sessions) { this.sessions = sessions; } }
這裏的實體類是會話表
@Entity @Table(name="session") public class Session { @Id @GeneratedValue private long id; private String location; @ManyToOne @JoinColumn(name="training_id") @JsonIgnore private Training training; private Date start; private Date end; @JoinTable(name="session_user", joinColumns = @JoinColumn(name="session_id"), inverseJoinColumns = @JoinColumn(name="trainingRole_id")) @MapKeyJoinColumn(name="user_id") @ElementCollection @JsonIgnore private Map<User, TrainingRole> users = new HashMap<User, TrainingRole>(); public long getId() { return id; } public void setId(long id) { this.id = id; } public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } public Training getTraining() { return training; } public void setTraining(Training training) { this.training = training; } public Date getStart() { return start; } public void setStart(Date start) { this.start = start; } public Date getEnd() { return end; } public void setEnd(Date end) { this.end = end; } public Map <User, TrainingRole> getUsers() { return users; } public void setUsers(Map<User, TrainingRole> users) { this.users = users; } }
這裏是用戶實體
@Entity @Table(name="user") public class User { @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name="id") private long id; @Column(name="csl",unique=true) private String csl; @Column(name="fullName") private String fullName; @Column(name="email") private String email; public User() { } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getCsl() { return csl; } public void setCsl(String csl) { this.csl = csl; } public String getFullName() { return fullName; } public void setFullName(String fullName) { this.fullName = fullName; } }
我正在使用JPARepository在我的mysql數據庫中保存培訓和會話對象
,但每當我節省了培訓對象或會話對象
我收到錯誤
c.j.MappingJackson2HttpMessageConverter : Failed to evaluate Jackson deserialization for type [simple type, class Session]: com.fasterxml.jackson.databind.JsonMappingException: Can not find a (Map) Key deserializer for type [simple type, class User]
我用Google搜索了一下,發現我需要序列化和反序列化手動..但我不知道如何做到這一點..請幫助我..
嗨,哥們..這個工作。現在錯誤不見了,JSON也得到了構成..但你有什麼想法如何刪除生成的JSON就像這個「users」:{「{\」id \「:1,\」csl \「:\」admin \「,\」fullName \「:\」admin \「, 「。 ......。 .. .. – Nawaz
我不認爲你可以。關鍵序列化器做的是從對象中創建一個字符串,因爲json只能用字符串作爲映射關鍵字。如果你刪除反斜槓,你將有一個畸形的JSON。 第二個選項是將密鑰更改爲字符串。 – Franjavi