日期:2014-05-19  浏览次数:20577 次

hibernate批量修改的问题
大家好!
  小弟求教了!
  两个类A和B,A的主键id和B表中得a_id在数据库是关联关系。
  我要做一个操作,新增一个A对象,再批量修改,给B表中a_id插入A对象的id,以下就是我的写法
  A a= new A();
  a.setId(通过主键生成器先获得);
  this.getHibernateTemplate().save(a);
  this.getHibernateTemplate().flush();
  this.getHibernateTemplate().clear();
  StringBuffer hql = new StringBuffer();
  hql.append("update B set a_id=").append(a.getId);
  this.getHibernateTemplate().bulkUpdate(hql.toString());

  然后我bug发现,断点通过this.getHibernateTemplate().clear()的时候A对象并未持久化到数据库,然后断点到最后一句,我在PLsql执行hql.toString(),报错parent key not found。
  请问以下,为什么flush,clear以后对象a没有持久化到数据库?


------解决方案--------------------
你何不先用个变量接住那个“通过主键生成器先获得”key,然后使用那个变量去操作呢。
------解决方案--------------------
flush的时候已经是persist到数据库了。已经detached。我猜你这里头不单单是一个对象吧。有casecade的吧。所以才会出现parent key not found。这个东东。