我在春天有问题,我无法克服。我在类和MySQL数据库中添加了许多字段,但这次我不知道发生了什么。
有问题的字段是 score
。我可以通过 GET 检索资源,并且该字段由 API 返回,但任何像 POST new 这样的修改都会抛出MySQLSyntaxErrorException: Unknown column 'score' in 'field list'
.
这是我的班级:
@Entity
@Table(name = "resources")
@Audited
@JsonPropertyOrder({"id"})
public class Resource extends ResourceSupport implements Localizable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long resourceId;
// ... other fields ...
private Double score; // <== that's the one!
public Double getScore() {
return score;
}
public void setScore(Double score) {
this.score = score;
}
// ... other getters and setters ...
}
在我的数据库中,我有一个以这种方式定义的score
字段:
CREATE TABLE `resources` ( (...) 'score' double NOT NULL (...) )
我真的不明白字段名称如何匹配,但我仍然得到例外。我浏览了 Stack 上的所有类似线程(大约 10 个),但没有一个解决这个特定问题......
好的,所以我发现了一个问题。我使用Hibernate Envers,这是Spring(自2009年以来)中的一种机制,允许您存储所选表中的记录历史记录。它自动为我的resources
表创建了resources_aud
表。后来我把列添加到resource
表中,但没有添加到resource_aud
表中。
顺便说一句,我推荐Hibernate Envers。它的使用非常简单。您只需添加@Audited
标签即可。