我有一个使用自动增量的hibernate表示法映射到表的类。当我设置值并将其更新到数据库并在表中获得正确的更新值时,此类工作正常。
但问题是当我创建这个类的新对象并尝试获取id时,它返回0而不是auto_incremented id。
该类的代码是
@Entity(name="babies")
public class Baby implements DBHelper{
private int babyID;
@Id
@Column(name="babyID", unique=true, nullable= false)
@GeneratedValue(strategy = GenerationType.AUTO)
public int getBabyID() {
return babyID;
}
public void setBabyID(int babyID) {
this.babyID = babyID;
}
}
我用来获取持久值的代码是
宝贝宝贝=新宝贝(); System.out.println(“BABY ID =”+ baby.getBabyID());这会给我一个
BABY ID = 0
任何指针都会受到赞赏。
谢谢, 萨纳。
答案 0 :(得分:2)
Hibernate只在实体变为持久化后生成id,即在将其保存到数据库之后。在此之前,对象处于瞬态。这是一篇关于Hibernate对象状态和lifecycle
的文章答案 1 :(得分:1)
当对象保存并变为可持久时,ID由休眠设置。
注释只是告知hibernate,他应该如何处理注释所引用的类,属性,方法。
另一件事如果你有当前id值如何hibernate,将能够识别他应该插入或只更新该值。
所以这是正常的预期行为。