我正在创建一个 Spring Boot API,它基本上要求用户创建一个帐户。 帐户详细信息显示在表格上。 我想从表单中获取详细信息并将其保存到数据库(MYSQL)中。
模型类如下:
@Table(name = "user")
public class User {
@Id
@Column(name = "ID")
private int ID;
@Column(name = "Fname")
private String fName;
@Column(name = "Lname")
private String lName;
@Column(name = "dob")
private String dob;
@Column(name = "email")
private String email;
@Column(name = "pWord")
private String pWord;
}
Controller 类如下:
public class MController {
@Autowired
private UserRepository userRepository;
@PostMapping("/successSignUp")
public String dataToDB(@ModelAttribute("User") User formData, Model model) {
userRepository.save(new User(formData.getFname(), formData.getLname(), formData.getDob(), formData.getEmail(), formData.getPassword()));
model.addAttribute("user", new User());
return "welcomeUser";
}
当我执行此代码时,出现以下错误:
java.sql.SQLSyntaxErrorException: Unknown column 'p_word' in 'field list'
我在这里做错了什么? 提前致谢。
最佳答案
Spring 框架在内部将驼峰式大小写更改为蛇形大小写。
这是 Spring Boot 命名策略的一部分: 我们可以覆盖这些值,但默认情况下,这些值将:
- 将 Camel 箱改为蛇箱
- 用下划线替换点
- 小写表名
您可以尝试将列名称更新为 pword 而不是 pWord 吗?
@Column(name = "pword")
private String pWord;
如果您使用“pWord”,它将被视为 p_word。请将列名称更新为“pword”并尝试。
示例:
@Entity
public class Account {
@Id
private Long id;
private String defaultEmail;
}
And then turn on some SQL debugging in our properties file:
hibernate.show_sql: true
At startup, we'll see the following create statement in our logs:
Hibernate: create table account (id bigint not null, default_email varchar(255))
关于java - 我们如何使用Spring Boot将jsp文件中的表单数据保存到数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58009653/