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);