当前位置: 代码迷 >> Java Web开发 >> hibernate executeUpdate 会引起save,该怎么处理
  详细解决方案

hibernate executeUpdate 会引起save,该怎么处理

热度:627   发布时间:2016-04-16 22:01:20.0
hibernate executeUpdate 会引起save
代码方法如下

@Override
@Transactional
public <T extends BasePojo> void save(T pojo) throws ServiceException {
if(pojo.getId() != null && pojo instanceof CmsResource) { //对象已存在
// PropertyFilter propertyFilter = new PropertyFilter();
// propertyFilter.setCompareClass(CmsResourcePictureSnapshot.class);
// propertyFilter.setCompareType(PropertyCompareType.EQ);
// propertyFilter.setPropertyName("cmsResource.id");
// propertyFilter.setPropertyValue(pojo.getId());
// //删除旧的图片快照
// delete(CmsResourcePictureSnapshot.class, propertyFilter);
this.executeUpdate("delete from CmsResourcePictureSnapshot where cmsResource.id = " + pojo.getId());
}
//super.save(pojo);
}

就是一个简单的executeUpdate hql语句,从打印的sql上显示,竟然会引发save,而且打印出的sql是先insert,再delete,这是为什么?
------解决方案--------------------
hibernate 不能自由控制输出 sql 的数目,这点不如 iBATIS 灵活
------解决方案--------------------
按理不可能会出现 这样的问题啊  ! 清理一下缓存试一下 

------解决方案--------------------
我两天前遇到了hibernate查询后会发送更新的语句,不知道和你这算不算一类问题,你可以试下?

据说是因为hibernate缓存中的数据发生变化后会发生该现象

session.setFlushMode(FlushMode.MANUAL);  //传说中的解决方案
Query q = session.createQuery(hql);

------解决方案--------------------
弱弱的问下,是不是配置了OpenSessionInViewFilter?
------解决方案--------------------
配置了OpenSessionInViewFilter,它会更改FlushMode的,具体的你自己搜下资料。
------解决方案--------------------
我也遇到这个问题,楼主你解决了没?
------解决方案--------------------
  相关解决方案