2012-04-11 82 views
5

您好我寫了這樣的如何生成具有自動休眠ID與初值

@Id 
@Column(nullable=false) 
@GeneratedValue(strategy=GenerationType.AUTO) 
public int getUserID() { 
    return UserID; 
} 

但是我手動從DAO像「e.setUserID設置它(01)代碼生成; 「插入。其他行不插入是否有任何過程來獲得id值,並檢索自動生成的值。即時通訊思想我會得到一些幫助

回答

4

使用

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

它的工作,但它是分配到另一列產生的價值 – Vidya 2012-04-12 06:42:26

+0

如果任何人投票,應該有一個理由,應該分享,爲什麼投了票? – Shehzad 2015-07-24 10:21:50

+0

這不是一個安全的方法,因爲生成器從數據庫中選擇最大ID並對其進行遞增。儘管它對於測試目的很有用。文檔清楚地警告'不要在集羣中使用!'。查看:https://docs.jboss.org/hibernate/orm/3.2/api/org/hibernate/id/IncrementGenerator.html https://docs.jboss.org/hibernate/orm/3.3/reference/en /html/mapping.html#mapping-declaration-id – 2015-08-11 07:35:48

5

使用身份生成類型,而不是汽車。使用一個長的ID。我還建議更改名稱從用戶IDuserId。不要忘記類名的@Entity。

@Entity 
public class MyClass{ 

private Long userId; 

    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    @Column 
    public Long getUserID(){ 
     return userId; 
    } 

    //.. rest of class 

} 

要小心使用命名約定,並確保您的字段名稱和類型與數據庫中的字段名稱和類型相匹配。

+0

當創建行時,它會自動創建ID值...或者我們應該調用setter方法 – Vidya 2012-04-12 04:50:55

+0

如果在數據庫中,id應該顯示爲身份,您應該從不**手動設置id。首先確保你的數據庫配置是自動增加ID的。然後按照我上面的建議映射id列。同樣,在命名約定和數據類型時要小心。 – 2012-04-12 06:25:36