it-roy-ru.com

Ошибка: указанный идентификатор не должен быть нулевым для GeneratedValue в JPA

Мой объект:

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

  //more code
 }

Когда я POSTuserJSON без uid, я получаю ошибку, так как указанный идентификатор не должен быть пустым . Что не должно быть так, пока база данных генерирует 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/"
}
3
Anil Bhaskar

Это было плохо, я звонил foo(user.getId()) перед тем, как сохранить объект User . В любом случае, отойди от этого; @GeneratedValue(strategy=GenerationType.IDENTITY) - правильный код, который генерирует идентичные идентификаторы при сохранении. И Long не проблема. Благодарю.

3
Anil Bhaskar

Чтобы сгенерировать строковые uuid для первичных ключей (как я полагаю, вы пытаетесь это сделать), вы можете попробовать следующий код:

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