最近遇到一個問題:
我在使用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")
uj5u.com熱心網友回復:
這里,我只是好奇為什么jpa和hibernate同時使用會報錯。但是在我另一個專案中,這兩個標簽在主鍵自增的情況下是可以一起使用的。
可我沒找到兩個專案上設定的區別。
很費解。有了解的人嘛?
uj5u.com熱心網友回復:
我還是去spring社區問問吧。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/96022.html
標籤:Web 開發
上一篇:泛型向上向下轉型
下一篇:Java用方法實作字串左移
