【问题标题】:Updating of records in Hibernate在 Hibernate 中更新记录
【发布时间】:2014-02-04 02:21:41
【问题描述】:

我是休眠的新手,我面临一个问题。 我已经从数据库中获取了记录并在 Jsp 表单上显示了值。

我想更新一些我已经显示的值

我做了实体隐藏表单域的ID。

当我点击提交时,不在表单上的值被设置为空。

每次我必须更新记录时,我必须再次手动将所有值设置为对象,然后保存

例子

我的用户实体具有以下字段 ID 名 姓 更新日期 创建日期

在我的 jsp 中,我只有两个字段 名 姓 在隐藏的表单域上 身份证

在我的控制器中,我正在创建用户的新 obj 并设置这三个值 我正在使用合并方法更新我的记录。

关于合并 DateCreated 和 dateUpdated 将变为空!

如何在不获取记录并设置修改后的值然后保存的情况下实现它

问候 拉曼迪普S

【问题讨论】:

    标签: hibernate


    【解决方案1】:
    User user;
    session = //Open a session
    Criteria criteria = session.createCriteria(User.class).add(Restrictions.idEq(id));
    List<T> objList = criteria.list();
    if(objList == null || objList.size() == 0) {
    }
    else {
        user = objList.get(0);
    }
    //user.setproperties() //etc
    //save it using the session
    

    您需要从数据库中获取对象。

    【讨论】:

      【解决方案2】:

      要么加载对象并使用休眠(最安全的方法)进行更新,要么运行传统的更新查询,即 sql 第二种方法可能更快,但如果没有匹配项,则存在不更新任何内容的风险。

      【讨论】:

        【解决方案3】:

        假设您有“员工”对象要更新到您的数据库中。

        步骤:

        1. 在更新之前,从数据库中获取员工对象 员工 = getEmployee(id);

        2. 获得员工对象后,请更新您的条目,然后将其保存为: 雇员.setName("XYZ") ; updateEmployee(员工);

        在这里您不必一次又一次地设置每个值。

        【讨论】:

          猜你喜欢
          • 2017-04-03
          • 1970-01-01
          • 2012-04-07
          • 1970-01-01
          • 1970-01-01
          • 2018-02-04
          • 2012-08-17
          • 2021-01-18
          • 1970-01-01
          相关资源
          最近更新 更多