hibernate如何获取刚刚保存的对象?



我的对象中有一个字段为date型,在数据库中有一个默认值sysdate,实体对象中设置了动态列,在保存这个对象时,日期字段没有给值,而是用的系统时间,我做了save(obj)后立刻想获取到数据库中的默认时间,为什么getUserDate()所取得的时间值为空?怎么取这个数据库中自动生成的默认时间?

你试试吧save方法封装下,让hibernate执行save之后在返回你保存的对象,这样就能取到了  public Object saveObject(Object obj)         throws SystemException     {         try         {             getHibernateTemplate().save(obj);         }         catch(Exception e)         {             e.printStackTrace()                }         return obj;     }
追问
我的save方法也是返回的一个对象,但是取不到数据库的默认值,其实可以手动设值,但是不知道为什么取不到值
回答

我的理解是这样的

  1. 首先hibernate在保存对象的时候其实是先将对象放到缓存中,并没有存到数据库。

    在同一个事务中save(obj)返回的对象其实就是你程序中设置的值,额外的就是hbm.xml文件的主键策略,生成主键

  2. hibernate往数据库发的是insert语句,并且改语句是根据代码中的hbm.xml来插入的,insert into student(id,name,code) values(1,null,’80′)这也是合法的即使你设置的默认值也会插入的,另外即使你设置了dynamic-insert=”true” dynamic-update=”true” 让数据库带有默认值了hibernate发送完毕hql语句后也不会把存到数据库中的值带回来,你看到的还是你程序中所赋值的对象。
  3. 你可以再po中设置默认值,比如private name=”小明”;或者通过hbm.xml文件设置默认值试试