我正在尝试使用 Web 应用程序上的一些输入行将新行存储到 SQL 表中。我的 jsp 具有我需要的所有输入行。但是,我需要存储新对象而不输入新 Id,因为它是自动递增的。我可以调用构造函数来存储除 id 之外的所有内容。到目前为止我该部分的代码是: @RequestMapping(value = "/save", method = RequestMethod.POST) public ModelAndView save //Index connect (@RequestParam("id") String id, @RequestParam("type") String animalType, @RequestParam("name") String animalName, @RequestParam("age") int animalAge){ ModelAndView mv = new ModelAndView("redirect:/"); AnimalConstruct newAnimal; newAnimal.setAnimalType(animalType); newAnimal.setAnimalName(animalName); newAnimal.setAnimalAge(animalAge); animals.save(newAnimal); mv.addObject("animalList", animals.findAll()); return mv;因此,如果我想存储“(id)11,(type)bird,(name)patty,(age)5”,并且我只将类型、名称和年龄设置为可输入,那么我应该对 id 做什么?我认为该对象在技术上将 id 注入为空,但随后我抛出了一个错误。我对 java 和 Springboot 都很陌生,并且在这两个方面的技能都非常薄弱。
3 回答
交互式爱情
TA贡献1712条经验 获得超3个赞
JPA 实现(例如 Hibernate)会带来神奇的效果。只需注释您的 id 字段,例如:
@Id @GeneratedValue(strategy=GenerationType.AUTO) private int id;
保存对象时,将自动生成并存储 id。
检查一些类似的问题:Hibernate Auto Increment ID和How to autogenerateprimarykeyidproperly with Hibernateinsertingrecords
狐的传说
TA贡献1804条经验 获得超3个赞
当您希望创建对象时,不应传递 ID。
@RequestMapping(value = "/protected", method = RequestMethod.POST)
public RouteDocument doPost(@RequestBody RouteDocument route) throws ControllerException {
createNewRoute(route);
return route;
}
在前面的示例中,createNewRoute 方法调用数据库,在我的例子中使用 spring JpaTemplate 来保存它。对象路由有一个由 JpaTemplate.save 填充的 ID 属性。因此,doPost 返回对象返回的对象与作为参数传递的对象相同,但具有自动分配的 ID。
添加回答
举报
0/150
提交
取消