2011-09-19 36 views

回答

13

Sequence使用數據庫序列(例如在Oracle中)來生成id,而increment跟蹤jvm中的id並在進程內增加它。如果任何其他程序/人員要插入到數據庫表中,序列更安全。

要使用順序:

  1. 數據庫必須支持序列(甲骨文,DB2和PostgreSQL ...)
  2. 你應該創建一個序列(CREATE SEQUENCE mySquence;

Increment不太安全解決方案(但對那些不支持Sequence的數據庫而言是可移植的),並且適用於測試和/或入門。有比使用Increment在生產中使用更好的方法(例如本地/身份等)。

3

我會使用自動生成的值。然後,Hibernate將爲您使用的數據庫產生最佳策略。

@Id 
@GeneratedValue(strategy=GenerationType.AUTO) 
private Long id; 

也意味着你可以在不改變你的實體的情況下測試像HsqlDB這樣的簡單內存數據庫。

+0

這不回答問題 – Karl

0

你可以試試這個行

@GenericGenerator(name = "increment", strategy = "increment") 
@GeneratedValue(generator = "increment")