【问题标题】:Hibernate: saveorupdate() not updating the object休眠:saveorupdate() 不更新对象
【发布时间】:2014-09-20 09:16:41
【问题描述】:

我正在使用 spring 来维护我的应用程序中的事务。 我想在数据库中保存新的并更新现有的用户详细信息。但我无法更新对数据库的更改。请参阅我下面的代码并告诉我在我的代码中做错了什么?

 Session session = getSessionFactory().getCurrentSession();
            UserDetails userDetails = (UserDetails) session.get(
                    UserDetails.class, new Integer(userId));

            if (userDetails!= null) {           
                userDetails.setUserName(name);
                userDetails.setUserDesc(desc);
            } else {
                userDetails= new UserAuthDetails();
                userDetails.setId(userId);
                userDetails.setUserName(name);
                userDetails.setUserDesc(desc);
                userDetails.setCreatedDt(new Date());
            }

            session.saveOrUpdate(userDetails);

谁能帮忙更新现有的 userdetail 对象?

【问题讨论】:

  • 您能否发布您的服务/dao/控制器的完整代码,您的事务在何处以及如何开始。

标签: java mysql database spring hibernate


【解决方案1】:

您需要在保存或更新到数据库之前开始事务。 您的代码应如下所示:

 Session session = getSessionFactory().getCurrentSession();
 Transaction tx=session.beginTransaction();
        UserDetails userDetails = (UserDetails) session.get(
                UserDetails.class, new Integer(userId));

        if (userDetails!= null) {           
            userDetails.setUserName(name);
            userDetails.setUserDesc(desc);
        } else {
            userDetails= new UserAuthDetails();
            userDetails.setId(userId);
            userDetails.setUserName(name);
            userDetails.setUserDesc(desc);
            userDetails.setCreatedDt(new Date());
        }

        session.saveOrUpdate(userDetails);
        tx.commit();

【讨论】:

    【解决方案2】:

    使您的 bean 可序列化。这会起作用的

    【讨论】:

    • 你需要解释你的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    • 2019-11-14
    • 1970-01-01
    相关资源
    最近更新 更多