首页 新闻 搜索 专区 学院

GeneratedValue和GenericGenerator的主键自增问题

0
悬赏园豆:20 [已关闭问题] 关闭于 2020-04-09 11:24
最近遇到一个问题: 我在使用jpa后,数据库设置主键为int自增类型, 使用如下方式 @Id @GeneratedValue(generator="generator") @GenericGenerator(name="generator", strategy="identity") @Column(name="accountid") save数据时会报错:java.sql.SQLSyntaxErrorException: Table 'testdb.generator' doesn't exist 很明显,他将我的库名.表名 指向了generator 类的代码: @Entity @Table(name="test_account",catalog="testdb") @DynamicUpdate public class Account implements java.io.Serializable { private Integer accountid; private String name; @Id @GeneratedValue(generator="generator") @GenericGenerator(name="generator", strategy="identity") @Column(name="accountid") public Integer getAccountid() { return accountid; } public void setAccountid(Integer accountid) { this.accountid = accountid; } @Column(name="name") public String getName() { return name; } public void setName(String name) { this.name = name; } } 但是如果我把数据库主键改为varchar(36),设置uuid @Id @GeneratedValue(generator="generator") @GenericGenerator(name="generator", strategy="uuid.hex") @Column(name="accountid") 这样设置就毫无问题,save是成功的。 PS:这个int自增问题,在编译时没问题,只有在save时,会报错 如果只是int自增,单纯jpa的注解设置,也是可以save成功的,但是混合了hibernate注解,就失败了! @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name="accountid") 这里,我只是好奇为什么jpa和hibernate同时使用会报错。 但是在我另一个项目中,这两个标签在主键自增的情况下是可以一起使用的。 可我没找到两个项目上设置的区别。 很费解。有了解的人嘛?
正怒月神的主页 正怒月神 | 初学一级 | 园豆:179
提问于:2020-04-09 10:56
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册