首页 新闻 会员 周边

GeneratedValue和GenericGenerator的主键自增问题

0
悬赏园豆:20 [已解决问题] 解决于 2023-04-19 16:20

最近遇到一个问题:
我在使用jpa后,数据库设置主键为int自增类型,
使用如下方式

save数据时会报错:java.sql.SQLSyntaxErrorException: Table 'testdb.generator' doesn't exist
很明显,他将我的库名.表名 指向了generator

类的代码:

但是如果我把数据库主键改为varchar(36),设置uuid

就毫无问题。

这个问题,在编译时没问题,只有在save时,会报错

PS:如果只是int自增,单纯jpa的注解设置,也是可以save成功的,但是混合了hibernate注解,就失败了!

这里,我只是好奇为什么jpa和hibernate同时使用会报错。
但是在我另一个项目中,这两个标签在主键自增的情况下是可以一起使用的。
可我没找到两个项目上设置的区别。
很费解。有了解的人嘛?

正怒月神的主页 正怒月神 | 初学一级 | 园豆:183
提问于:2020-04-09 10:57

建议重新编辑一下问题,注意代码格式,现在混在一起完全没法看了、

。淑女范erり 4年前
@。淑女范erり: 好的 正怒月神 4年前

@正怒月神: 你说的另一个项目,和这个hibernate的版本不一样吧?现在用的5?

。淑女范erり 4年前

@。淑女范erり: 我之前看过jpa和hibernate的版本使用的是一样的。所以我非常纳闷。。。。

正怒月神 4年前

@正怒月神: 不太懂Hibernate的机制,从报错上来看,他应该是从这个配置认为你的主键的值要从generator这个sequence来获取。你可以去正常的环境的数据库看下有没创建过这个序列/表。 或者把hibernate的日志打开,showsql什么的,看看哪一步执行了select next_val from generator之类的命令。。

。淑女范erり 4年前
< >
分享
最佳答案
0

不想这么多了,自增int主键就这样吧
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)

正怒月神 | 初学一级 |园豆:183 | 2023-04-19 16:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册