web-dev-qa-db-ja.com

エラー:JPAのGeneratedValueに対して指定されたIDがnullであってはなりません

私の目的:

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

  //more code
 }

POSTuserJSONuidなしで使用すると、指定されたIDはnullであってはなりませんとしてエラーが発生します。 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

それは私の悪いことでした。Userオブジェクトを永続化する前にfoo(user.getId())を呼び出していました。とにかく、これから離れてください。 @GeneratedValue(strategy=GenerationType.IDENTITY)は正しいコードであり、永続化中に同一のIDを生成します。そして、Longは問題ではありません。ありがとう。

4
Anil Bhaskar

主キーの文字列uuidを生成するには(私がやろうとしていると思いますが)、次のコードを試すことができます。

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