2012-03-16 53 views
2

我一直在尋找不同的論壇的問題,並嘗試了不同的解決方案,但我仍然無法找到任何正確的答案,我的問題。休眠不會在mysql表上產生自動增量限制

我使用hibernate4註釋映射我的實體。一切工作正常,但只有自動增量鍵沒有檢測到時使用MySQL中的休眠創建表。

我有以下代碼:

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Column(unique = true, nullable = false) 
private int responseId; 

我也有試過

@Id 
@GenericGenerator(name="generator", strategy="increment") 
@GeneratedValue(generator="generator") 
private int responseId; 

與Hibernate它的作品精美絕倫,ID被自動分配到排,但在MySQL表它沒有自動增加約束。我必須手動將字段標記爲AI。當我手動插入記錄進行測試或對錶使用jdbc語句時,這會變得有問題。 Plz讓我知道我在配置中缺少的是防止休眠在相應的列上施加AutoIncrement Contraint。

+0

你如何註解創建表?我們通常採用相反的方式 – kommradHomer 2012-03-18 10:01:57

+0

我們創建類和關係,然後通過將hibernate.hbm2ddl.auto設置爲'update'生成表。 – maimoona 2012-07-03 06:38:49

回答

4

使用Identity發電機,並使用@ColumncolumnDefinition屬性來指定列的類型:

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Column(columnDefinition = "MEDIUMINT NOT NULL AUTO_INCREMENT") 
private int responseId; 
+0

工作!!!!!許多很多謝謝......這只是讓我瘋狂...... – maimoona 2012-03-16 10:41:04

+1

不要這樣做!如果任何其他實體對您的響應實體有引用(在db表中,不僅僅是模型中的反向引用),那麼外鍵字段也將自動增量! – maklemenz 2014-02-20 15:56:22

+0

它對我來說看起來不太好..見http://stackoverflow.com/questions/4102449/how-to-annotate-mysql-autoincrement-field-with-jpa-annotations – BrunoJCM 2015-09-02 19:38:10