错误:对于 JPA 中的生成值,给定的 id 不得为空



我的对象:

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

当我在没有uid的情况下POSTuserJSON时,我收到错误,因为给定的 id 不得为空。当uid应该由数据库生成时,情况不应该如此。请指出我错过了什么。

杰森:

{
"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/"
}

这是我的错,我在将User对象保存到数据库之前调用了foo(user.getId())。 从中得出的结论是:@GeneratedValue(strategy=GenerationType.IDENTITY)是正确的代码,并在保存到数据库1时生成相同的 ID。Long不是问题。谢谢。

[1]:我通过以下方式将对象保存到数据库中,如下所示:userRepository.save(user)

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

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

无论你在这个特定问题上做@GeneratedValue(strategy=GenerationType.IDENTITY)还是@GeneratedValue(strategy=GenerationType.TABLE),都没有错。任何策略都有效。您所能确保的是当您通过id时是否使用@PathVariable

当我在方法中缺少@PathVariable(value="id")ID ID时findById()方法遇到了同样的问题getIdSpecificResult()。这是我代码上的一个小缺失部分。原因可能是任何

相关内容

  • 没有找到相关文章

最新更新