悬赏园豆: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同时使用会报错。
但是在我另一个项目中,这两个标签在主键自增的情况下是可以一起使用的。
可我没找到两个项目上设置的区别。
很费解。有了解的人嘛?
正怒月神
|
初学一级
|
园豆:
183
提问于:2020-04-09 10:56