我采用的技术是SSH整合,用Hibernate操作数据库,删除方法如下://删除
public boolean delete(Object obj) throws Exception{
this.getHibernateTemplate().delete(obj);

boo=true;
return boo;
}
在Action中调用这个方法时,我传入了一个对象,我只保存了这个对象的主键值,这样可以吗?我觉得应该行。但是却报出了错误,让我保存其他非空的属性的值。接着我就按照要求,根据id把对象所有的非空属性的值都保存了,但这时又报了一个错,说这个对象不是java.Lang.Object类型,郁闷啊!望高手指点!!急急,小妹感激不尽!

解决方案 »

  1.   

    delete可以直接用语句来做. 
    delete MyObject where id = ?还有一种就是先通过id来get对象, 然后在delete.
      

  2.   

    楼上正解,可以用get(id)得到一个对象,再delete(get(id));
      

  3.   


    类似这样应该可以,先通过ID查到对象,再删除,不过,应该只设置ID就行了。
      

  4.   

    我不知道楼主什么错,不过用hql肯定可以的"delete 表映射的类名 where id=你的ID"
      

  5.   

    hibenate  的delete 要求对象是 持久化的 不可是瞬时的 
      

  6.   

    或者用这个应该也可以达到楼主的要求了。
    this.getHibernateTemplate().delete(new Obj(objId)); 
      

  7.   

    我以前用的是,先通过get拿到后,再delete这样虽然可以做到,但是我觉得这样做基本上没有用到持久化
      

  8.   

    我也遇到过这样的问题
    解决方案是
    先通过Obj obj=(Obj)session.get(Obj.class,id);
    然后在session.delete(obj);
    这样就不会报错啦
      

  9.   

    这个问题我解决了,我把删除方法改了一下。如下:
    //删除
    public int delete(String hql) throws Exception{
    // this.getHibernateTemplate().delete(obj);
    int num=0;
    Query query=this.getSession().createQuery(hql);
    num=query.executeUpdate();

    return num;
    }
    参数是一个字符串,这样就传入HQL语句。delete 映射类 where id=?;
    希望有同样问题的朋友可以尝试一下这个方法哦!