正怒月神 炒鸡!软件攻城狮  2020年04月08日
GeneratedValue和GenericGenerator的主键自增问题
最近遇到一个问题:
我在使用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自增,单纯jpa的注解设置,也是可以save成功的,但是混合了hibernate注解,就失败了!
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="accountid")
...全文
82 点赞 收藏 2
写回复
2 条回复

还没有回复,快来抢沙发~

发动态
发帖子
Web 开发
创建于2007-09-28

5.2w+

社区成员

34.1w+

社区内容

Java Web 开发
社区公告
暂无公告