我正在嘗試使用 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
提交
取消