最近遇到一个问题:
我在使用jpa后,数据库设置主键为int自增类型,
使用如下方式
save数据时会报错:java.sql.SQLSyntaxErrorException: Table 'testdb.generator' doesn't exist
很明显,他将我的库名.表名 指向了generator
类的代码:
但是如果我把数据库主键改为varchar(36),设置uuid
就毫无问题。
这个问题,在编译时没问题,只有在save时,会报错
PS:如果只是int自增,单纯jpa的注解设置,也是可以save成功的,但是混合了hibernate注解,就失败了!
这里,我只是好奇为什么jpa和hibernate同时使用会报错。
但是在我另一个项目中,这两个标签在主键自增的情况下是可以一起使用的。
可我没找到两个项目上设置的区别。
很费解。有了解的人嘛?
不想这么多了,自增int主键就这样吧
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
建议重新编辑一下问题,注意代码格式,现在混在一起完全没法看了、
– 。淑女范erり 4年前@正怒月神: 你说的另一个项目,和这个hibernate的版本不一样吧?现在用的5?
– 。淑女范erり 4年前@。淑女范erり: 我之前看过jpa和hibernate的版本使用的是一样的。所以我非常纳闷。。。。
– 正怒月神 4年前@正怒月神: 不太懂Hibernate的机制,从报错上来看,他应该是从这个配置认为你的主键的值要从
– 。淑女范erり 4年前generator
这个sequence来获取。你可以去正常的环境的数据库看下有没创建过这个序列/表。 或者把hibernate的日志打开,showsql什么的,看看哪一步执行了select next_val from generator
之类的命令。。