日期:2014-05-17  浏览次数:20575 次

在用hibernate的update方法的时候 没有执行!怎么回事?在线等!
@SuppressWarnings("serial")
@Controller("UpdateAddressAction")
public class UpdateAddressAction extends ActionSupport implements ModelDriven<Address>{

@Resource
private AddressDao addressdao;
private Address address;



public Address getModel() {
if(address == null){
address=new Address();
}
return address;
}
public String execute(){

addressdao.update(getModel());   //我在这里调用 uodate方法
return SUCCESS;
}



}



下面是我的dao方法

public void update(Address addr){
System.out.println("更新执行");
getSession().update(addr);
System.out.println("更新执行完毕");
   }


控制台没有输出 upate语句· 但是输出了"更新执行";System.out.println"更新执行完毕";两句话
没有异常,测试 save 等方法都没问题! 求解?
hibernate java

------解决方案--------------------
引用:
我看不到你的dao封装了些什么东西,但是我的dao是这样封装的

protected SessionFactory sessionFactory;

protected HibernateTemplate hibernateTemplate;


spring管理sessionFactory再通过sessionFactory获取hibernateTemplate,通过hibernateTemplate的方法配合泛型来操作数据库
如果你不是这样那就请用原生的方法,获取sessionfactory,打开session,执行持久化操作,commit,close


而且我看到了一个你其中有一个判断
 if(address == null){
            address=new Address();
        }

如果address==null成立,你根本就看不出来是否执行的update


引用:
我看不到你的dao封装了些什么东西,但是我的dao是这样封装的

protected SessionFactory sessionFactory;

protected HibernateTemplate hibernateTemplate;


spring管理sessionFactory再通过sessionFactory获取hibernateTemplate,通过hibernateTemplate的方法配合泛型来操作数据库
如果你不是这样那就请用原生的方法,获取sessionfactory,打开session,执行持久化操作,commit,close


而且我看到了一个你其中有一个判断
 if(address == null){
            address=new Address();
        }

如果address==null成立,你根本就看不出来是否执行的update
对的,看看address是否为空呢,为空的话,你new出来是不会更新的
------解决方案--------------------
看下是否有事物,如果配置事物,我记得不用手动提交,但是如果没有事物,又没有调用commit的话,hibernate是不会发出sql的
------解决方案--------------------
不科学呀,
先得到address实体先,然后再把页面的值set给它,然后看看是否update可以