【问题标题】:Update in hibernate with single database query使用单个数据库查询在休眠中更新
【发布时间】:2016-10-28 21:10:02
【问题描述】:

假设我有一个员工类,它有 3 个字段 - empId、empName 和 empAddress。

我只想更新empId为1的员工的地址。如果我使用session.update(emp),它会将empName设置为null,我当然不希望这样。

有没有什么方法可以在不使用 hql 的情况下在单个数据库查询中实现这一点。

我想复制 sql 查询:“update employee set empAddress = 'addr1' where empId = 1”

【问题讨论】:

  • 为什么不使用你真正想要持久化的empName 的值呢?在底层,Hibernate 只是运行 JDBC SQL 查询。
  • 我只有 empId(identifier) 和 empAddress(我要更新的字段)。

标签: java mysql hibernate


【解决方案1】:

请参考hibernate DML-style operations

hibernate Query 接口现在包含一个名为 executeUpdate() 的方法,用于执行 HQL UPDATE:

String hql = "UPDATE Employee set empAddress = :empAddress "  + 
             "WHERE empId = :empId";
Query query = session.createQuery(hql);
query.setParameter("empAddress", 1000);
query.setParameter("empId", 10);
int result = query.executeUpdate();
System.out.println("Rows affected: " + result);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多