2017-07-26 59 views
3

我的目標:錯誤:給定的ID不能用於GeneratedValue爲空在JPA

@Entity 
@Table(name="user") 
public class User { 
    @Id 
    @Column(name="uid") 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private Long id; 

    //more code 
} 

當我POSTuserJSON沒有uid,我得到錯誤的定id不能爲空 。數據庫應該生成uid應該不是這種情況。請指出我錯過了什麼。

JSON:

{ 
"email": "[email protected]", 
"name": "John Doe", 
"phone": "98-765-4445" 
} 

錯誤:

{ 
"timestamp": 1501058952038, 
"status": 500, 
"error": "Internal Server Error", 
"exception": "org.springframework.dao.InvalidDataAccessApiUsageException", 
"message": "The given id must not be null!; nested exception is java.lang.IllegalArgumentException: The given id must not be null!", 
"path": "/api/user/" 
} 
+0

你可以試試 - > @GeneratedValue(strategy = GenerationType.TABLE),這個使用序號表編號分配 – JavaLearner1

+0

不行,不行。 –

+0

@GeneratedValue(strategy = GenerationType.AUTO)將工作,參考:https://stackoverflow.com/questions/4102449/how-to-annotate-mysql-autoincrement-field-with-jpa-annotations – JavaLearner1

回答

2

這是我的不好,我在打電話給foo(user.getId())之前堅持User對象。不管怎麼說,拿走這個; @GeneratedValue(strategy=GenerationType.IDENTITY)是一個正確的代碼,它會在持續時生成相同的ID。並且Long不是問題。謝謝。

0

要生成的字符串UUID的主鍵(我假設你正在嘗試做的),你可以試試下面的代碼:

@Id 
@GeneratedValue(generator = "uuid") 
@GenericGenerator(name = "uuid", strategy = "uuid2") 
private String id; 
相關問題