>我有一个弹簧应用的豆子
@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。但是在使用休眠保存对象后,dbid包含值。我不知道发生了什么。
控制器代码为:
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();
}
}
Hibernate执行PreparedStatement.getGeneratedKeys()
以在插入后获取生成的id。
还相关: hibernate.jdbc.use_get_generated_keys
.
旁注:Java 中的基元类型不能具有null
值。可能你的意思是0
,或者 id 的类型是 Integer
。