hibernate auto_increment getter / setter

时间:2010-10-27 15:41:35

标签: java hibernate

我有一个使用自动增量的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

任何指针都会受到赞赏。

谢谢, 萨纳。

2 个答案:

答案 0 :(得分:2)

Hibernate只在实体变为持久化后生成id,即在将其保存到数据库之后。在此之前,对象处于瞬态。这是一篇关于Hibernate对象状态和lifecycle

的文章

答案 1 :(得分:1)

当对象保存并变为可持久时,ID由休眠设置。

注释只是告知hibernate,他应​​该如何处理注释所引用的类,属性,方法。

另一件事如果你有当前id值如何hibernate,将能够识别他应该插入或只更新该值。

所以这是正常的预期行为。