弹簧数据 JPA; save() 自动递增主键错误

Posted

技术标签:

【中文标题】弹簧数据 JPA; save() 自动递增主键错误【英文标题】:Spring Data JPA; save() auto increment primary key error 【发布时间】:2015-04-18 21:24:27 【问题描述】:

我有一个以 UserId 作为主键的 USER 表,它是 int 并在 mysql 中自动递增。

@Id
@GeneratedValue
@Column(name="USER_ID")
private Integer userId;

当我运行 userRepository.save(user);我收到一条错误消息:org.springframework.beans.InvalidPropertyException:bean 类 [com.mysite.model.User] 的无效属性“userId”:属性“userId”的获取器抛出异常;嵌套异常是 java.lang.reflect.InvocationTargetException

如果我只是硬编码用户 ID,我不会收到此错误。我做错了什么?

// hard code it
user.setUserId(5);
userRepository.save(user);

【问题讨论】:

【参考方案1】:

您可能需要设置 ID 策略: @GeneratedValue(strategy=GenerationType.IDENTITY)

你所拥有的应该工作,但也可以是古怪的。

【讨论】:

@GeneratedValue(strategy = GenerationType.AUTO)【参考方案2】:

发现我的问题:我在我的 setter 和 getter 中使用 int 作为 userId,而不是 Integer。

【讨论】:

以上是关于弹簧数据 JPA; save() 自动递增主键错误的主要内容,如果未能解决你的问题,请参考以下文章

Spring JPA save 实现主键重复抛异常

带有谓词的弹簧数据 JPA 方法 findAll() - QueryDslPredicateExecutor

弹簧状态机数据 jpa 示例问题

无法使用弹簧数据 jpa CrudRepository

如何在jpa中实现自动增量

C#/SQLCE CREATE TABLE 以编程方式(自动递增 + 主键)