web-dev-qa-db-fra.com

Erreur: l'id donné ne doit pas être null pour GeneratedValue dans JPA

Mon objet:

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

  //more code
 }

Lorsque je POSTuserJSON sans uid, j'obtiens une erreur en tant que l'identifiant donné ne doit pas être nul . Ce qui ne devrait pas être le cas alors que uid devrait être généré par la base de données. S'il vous plaît indiquer ce qui me manque.

JSON:

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

Erreur:

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

C'était mon mauvais, j'appelais foo(user.getId()) avant de continuer l'objet User. Quoi qu'il en soit, éloignez-vous de cela; @GeneratedValue(strategy=GenerationType.IDENTITY) est un code correct et génère des identifiants identiques en cas de persistance. Et Long n'est pas un problème. Merci.

3
Anil Bhaskar

Pour générer la chaîne uuid des clés primaires (comme je suppose que vous essayez de le faire), vous pouvez essayer le code suivant:

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