首页 > 解决方案 > Hibernate, MySQL, Spring MVC,Freemarker :java.sql.SQLSyntaxErrorException: 你的 SQL 语法有错误

问题描述

我正在制作简单的 Spring MVC 库应用程序,使用 Freemarker、MySQL 和 Hibernate,我创建了用于向图书馆添加新书的表单,它的代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Create new user</title>
</head>
<body>
<form name="booker" action="/newBook" method="post" >
<p>Name</p>
<input title="Name" type="text" name="name">
<p>Desc</p>
<input title="Email" type="text" name="desc">
<p>Author</p>
<input title="Age" type="text" name="aut">
<p>Year</p>
<input title="Age" type="text" name="year">
<input type="submit" value="OK">
</form>
</body>
</html>

我也有 Controller、BookDAO、BookService 和 Book 实体

控制器:

@Controller
@RequestMapping("/")
public class BookController {
@Autowired
private BookService service;

@GetMapping("/books")
public String viewAll(Model model){
    model.addAttribute("books",service.findAll());
    return "books";
}
@GetMapping("/addBook")
public String addBook(){

    return "createBook";
}
@PostMapping("/newBook")
public String newBooks(@ModelAttribute("booker") Book book){
    service.add(book);
    return "redirect:/books";
}
}

实体:

  @Table(name = "booker")
  @Entity
  public class Book {
  private int id;
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
@Column(name = "idbooker")
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
private String name;
private String desc;
private String aut;
private int year;
@Column(name = "name")
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}

@Column(name="desc")
public String getDesc() {
    return desc;
}
public void setDesc(String desc) {
    this.desc = desc;
}

@Column(name = "aut")
public String getAut() {
    return aut;
}
public void setAut(String author) {
    this.aut = author;
}


@Column(name = "year")
public int getYear() {
    return year;
}
public void setYear(int year) {
    this.year = year;
}
}

当我尝试发布新书时,我得到了这个异常,数据库列的名称是一样的,有人可以告诉我如何修复它,ty。在此处输入图像描述

标签: javamysqlhibernatespring-mvctomcat

解决方案


您可能对desc(保留字)有一些问题吗?尝试使用 backtics

 @Column(name="`desc`")

推荐阅读