在前端,有这样的代码:
$("#add_button").click(function() {
console.log("The button has been pressed");
var genre = {
name: $("#genre_name").val(),
description: $("#genre_desc").val()
};
$.ajax({
type: "POST",
url: "/save_genre",
data: JSON.stringify(genre),
contentType: "application/json",
success: function(response) {
console.log("Genre successfully created:", response);
},
error: function(error) {
console.error("An error occurred while creating the genre:", error);
}
});
在其中,通过按下按钮,我们从两个表单读取数据,创建一个对象,将其序列化为 JSON 格式,并向 URL“/save_genre”的服务器发送 POST 请求。
反过来,在服务器端,我们接受并写入数据库:
@RestController
public class AddGenreRestController {
@Autowired
private GenreRepository GenreRepository;
@PostMapping("/save_genre")
public Genres addGenre(@RequestBody Genres genre) {
System.out.println("Genre = " + genre.GetName());
return GenreRepository.save(genre);
}
}
响应以下行:
System.out.println("Genre = " + genre.GetName());
值 Genre = null
被打印到控制台。表中创建了一条新记录,但字段也设置为 NULL
。
为什么会发生这种情况以及如何解决?
我的“流派”课程:
@Entity
@Table(name="Genres")
public class Genres {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long ID;
private String name;
@Lob
@Column(columnDefinition = "text")
private String description;
public Genres() {
}
public Long GetID() { return ID; }
public void SetID(Long ID) { this.ID = ID; }
public String GetName() { return name; }
public void SetName(String name) { this.name = name; }
public String GetDescription () { return description; }
public void SetDescription(String description) { this.description = description; }
}
getter/setter 名称与 bean 约定不匹配,改为首字母小写或使用 Jackson 注解进行标记
public String getName() { return name; }
public void setName(String name) { this.name = name; }