错误:JPA中GeneratedValue的给定id不能为null

时间:2017-07-26 08:57:55

标签: java rest jpa spring-boot spring-rest

我的对象:

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

  //more code
 }

当我POST user JSON没有uid时,我收到错误,因为给定的ID不能为空。在数据库生成uid时不应该出现这种情况。请指出我错过了什么。

JSON:

{
"email": "john@mail.com",
"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/"
}

2 个答案:

答案 0 :(得分:3)

这是我的不好,我在坚持foo(user.getId())对象之前调用了User。 无论如何,带走这个; @GeneratedValue(strategy=GenerationType.IDENTITY)是一个正确的代码,它会在持久化时生成相同的ID。并Long不是问题。感谢。

答案 1 :(得分:0)

要为主键生成字符串uuid(我假设您正在尝试这样做),您可以尝试以下代码:

$.getJSON( {
url  : 'https://maps.googleapis.com/maps/api/geocode/json',
data : {
    sensor  : false,
    address : address
},
success : function( data, textStatus ) {
    console.log( textStatus, data );
}