java generatedvalue_java – 在JPA @GeneratedValue列中手动指定主键的值

我有一个实体,它有一个主键/ ID字段,如下所示:

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

private Long id;

这个效果很好我正在使用EclipseLink来创建DDL架构,列正确创建如下:

`id` bigint(20) NOT NULL AUTO_INCREMENT

然而,我有几个实体,我想要自己指定PK(这是​​一个将数据从旧数据库传输到我们正在构建的新数据库的小应用程序)。如果我指定POJO的ID(使用setId(Long id))并持久化,EclipseLink不保存它(即记录被保存,但是id由eclipseLink自动生成)。

有没有办法手动指定具有@GeneratedValue的列的值?

这里有一些关于这个问题的想法:

我试图通过不使用@GeneratedValue解决问题,但只需手动将列定义为AUTO_INCREMENT。但是,这迫使我手动提供ID,因为EclipseLink验证主键(因此它可能不为null,零或负数)。异常消息读取我应该指定eclipselink.id_validation,但这似乎没有任何区别(我注释到@PrimaryKey(validation = IdValidation.NONE)但仍然有相同的消息)。

澄清:我使用EclipseLink(2.4.0)作为持久性提供程序,我不能从其中切换(大部分项目依赖于eclipselink特定的查询提示,注释和类)。

编辑(响应答案):

自定义排序:我试图实现我自

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值