OpenJPA中的@GeneratedValue不允許賦值

在使用OpenJPA的時候,創建Entity,id是使用@GeneratedValue來生成的,由於沒有注意到它的特性,在update的時候,直接自己生成了一個Entity實例,然後給id賦值,沒想到拋出錯誤,說是會給id賦值產生重複鍵,但其實這個id是存在的,我只是想更新它。後來廢了好大的勁,才搜到@GeneratedValue不能賦值,無論是創建還是更新時,似乎OpenJPA在生成的Entity的Class中做了手腳,一旦有賦值就拋出異常。

如:
@Entity
class Person{
@Id
@GeneratedValue(strategy 
= GenerationType.AUTO, generator = "uuid-hex")
private int id;

public int getId() {
     
return id;
}

public void setId(int id) {
     
this.id = id;
}

}

當更新時,如果這樣寫就會出錯:
int id = 1;//這個id在數據庫中已經存在,要更新這個id所屬的行
Person p = new Person();
p.setId(id);
必須要這樣寫:
int id = 1;//這個id在數據庫中已經存在,要更新這個id所屬的行
Person p = entityManager.get(Person.class, id);
//更新p的信息
entityManager.update(p);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章