我的 Spring JPA 项目中有一个奇怪的问题,它阻止我创建新用户,但我可以修改现有用户。我正在为我的方法实现 Spring JPA 的 CrudRepository
。
- 我的表格中有 200 个现有用户
- 我可以使用 SQL 脚本手动创建
如果通过表单创建的用户没有 ID,我会手动为其分配一个 ID - 只是为了测试
类别
@Entity(name="User")
public class User {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="Id", nullable = false)
private Long id;
@Column(name="name")
private String name;
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 User(){}
表格(百里香叶)
<form th:action="@{/saveUser}" th:object="${user}" method="post">
<p>Name: <input type="text" th:field="*{name}" /></p>
<p>ID: <input type="hidden" th:field="*{id}" /></p>
</form>
Controller
@RequestMapping(value = "/saveUser", produces = "text/html", method = RequestMethod.POST)
public ModelAndView saveUser(
@ModelAttribute("user") User user,
@RequestParam("id", required = false) Long Id,
Model model) {
try {
if(user.getId() == null || user.getId() == 0){
user.setId(40000) //arbitrary ID
}
userRepo.save(user);
} catch(Exception e){
logger.error("Error saving user" + e.getMessage());
}
return getUserForm(user.getId());
}
但是我在保存时遇到错误
Cannot insert the value NULL into column 'Id', table 'dbo.User'; column does not allow nulls. INSERT fails
我可以看到在推送到保存方法时确实设置了用户 ID - 这里有什么我可以忽略的吗?
最佳答案
代码中有两处可疑之处:
取出实体类中定义的公共(public)构造函数。 (如果我是对的,JPA规范不推荐)
如果实际上未按表中的方式定义“@GenerateValue(strategy=GenerationType.IDENTITY)”行,则从实体类中取出该行。
祝你好运,克莱!!!
关于java - Spring JPA可以修改实体但不能创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35178379/