Spring 数据库端和应用程序端的自动增量字段内部发生了什么?

Spring 数据库端和应用程序端的自动增量字段内部发生了什么?,spring,hibernate,increment,Spring,Hibernate,Increment,我有一个用于spring应用程序的bean @Entity @Table(name="tbl_apply_leave") public class ApplyLeaveModel{ @Id @GeneratedValue(strategy=GenerationType.AUTO) private int dbid; private String employee_name; public int getDbid() { return dbid; } public void setDb

我有一个用于spring应用程序的bean

@Entity
@Table(name="tbl_apply_leave")
public class ApplyLeaveModel{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int dbid;
private String employee_name;


public int getDbid() {
    return dbid;
}
public void setDbid(int dbid) {
    this.dbid = dbid;
}
public String getEmployee_name() {
    return employee_name;
}
public void setEmployee_name(String employee_name) {
    this.employee_name = employee_name;
}
}

然后在控制器中保存此对象之前,dbid的值为null。 但在使用hibernate保存对象后,dbid包含值。 我不知道发生了什么事

控制器代码为:



Hibernate在插入后执行以获取生成的id

也相关:


旁注:Java中的基元类型不能有
null
值。可能您的意思是
0
,或者id的类型是
Integer

您的数据库是什么?
     System.out.println(applyLeaveModel.getDbid()); // null
     leave_dao.saveApplyLeaveModel(applyLeaveModel);
     System.out.println(applyLeaveModel.getDbid()); // 5
   public void saveApplyLeaveModel(ApplyLeaveModel applyLeaveModel) {
            Session session = null;
            Transaction trans_obj = null;
            try {
                session = sessionFactory.openSession();
                if (session.isOpen() && session != null) {
                    trans_obj = session.beginTransaction();
                    session.persist(applyLeaveModel);
                } 
            } catch (Exception e) {
                System.out.println("save ApplyLeaveModel session " + e);
            } finally {
                trans_obj.commit();
                session.close();
            }
        }