3 回答

TA貢獻1712條經(jīng)驗 獲得超3個贊
JPA 實現(xiàn)(例如 Hibernate)會帶來神奇的效果。只需注釋您的 id 字段,例如:
@Id @GeneratedValue(strategy=GenerationType.AUTO) private int id;
保存對象時,將自動生成并存儲 id。
檢查一些類似的問題:Hibernate Auto Increment ID和How to autogenerateprimarykeyidproperly with Hibernateinsertingrecords

TA貢獻1804條經(jīng)驗 獲得超3個贊
當您希望創(chuàng)建對象時,不應(yīng)傳遞 ID。
@RequestMapping(value = "/protected", method = RequestMethod.POST)
public RouteDocument doPost(@RequestBody RouteDocument route) throws ControllerException {
createNewRoute(route);
return route;
}
在前面的示例中,createNewRoute 方法調(diào)用數(shù)據(jù)庫,在我的例子中使用 spring JpaTemplate 來保存它。對象路由有一個由 JpaTemplate.save 填充的 ID 屬性。因此,doPost 返回對象返回的對象與作為參數(shù)傳遞的對象相同,但具有自動分配的 ID。

TA貢獻1805條經(jīng)驗 獲得超10個贊
使用以下內(nèi)容注釋 bean 中的 id 列:
@Id @GeneratedValue (strategy = GenerationType.IDENTITY) private long id;
正如上面 @pedrohreis 所回答的,您也可以使用GenerationType.AUTO
,但前提是您的唯一目的是使自動增量 id 那么我更喜歡GenerationType.IDENTITY
另外,在您的項目中,如果您想禁用數(shù)據(jù)的批量更新,那么您應(yīng)該使用GenerationType.IDENTITY
.
參考:休眠標識符
添加回答
舉報