使用hibernate更新列

时间:2014-10-28 05:59:11

标签: java hibernate

我有两个班员工部门

public class Employee {
  int empId;
  String empName;
  Boolean isEmpAvailable;
  String empAddress;
  Department department;

 }


public class Department {
   int deptId;
   String deptName;
  }

我为Department.hbm.xml和Employee.hbm.xml类创建了hibernate文件文件

我想基于Department表中的deptid更新表Employee中的isEmpAvailable列。

这里我面临更新查询的问题,在阅读在线文档后我不清楚

       public void updateEmployee(Employee emp, Department deptid){
          String query= " update Employee set isEmpAvailable=? where deptid=?   
          Object[] values= {"true","133"};
          getHibernateTemplate.update(query,values);
        }

当我运行代码时,列不会得到更新。抛出错误        实体未被识别:更新员工设置isEmpAvailable =? deptid =?

我读过在线文档,其中包含getHibernateTemplate()方法,返回类型为整数。在这里,我喜欢通过调用dao.updateEmployee而不使用任何返回类型来直接更新数据库。我无法做到。请建议我

2 个答案:

答案 0 :(得分:2)

hibernate中的更新是这样完成的:

String hqlUpdate =
    "update Employee e " +
    "set e.isEmpAvailable = :isEmpAvailable " +
    "where e.deptid = :deptid";
int updatedEntities = session.createQuery( hqlUpdate )
    .setBoolean( "isEmpAvailable", isEmpAvailable )
    .setInt( "deptid", deptid )
    .executeUpdate();

OR

String jpqlUpdate =
    "update Employee e " +
    "set e.isEmpAvailable = :isEmpAvailable " +
    "where e.deptid = :deptid";
int updatedEntities = entityManager.createQuery( jpqlUpdate )
    .setBoolean( "isEmpAvailable", isEmpAvailable )
    .setInt( "deptid", deptid )
    .executeUpdate();

OR

String hqlVersionedUpdate =
    "update versioned Employee e " +
    "set e.isEmpAvailable = :isEmpAvailable " +
    "where e.deptid = :deptid";
int updatedEntities = s.createQuery( hqlUpdate )
    .setBoolean( "isEmpAvailable", isEmpAvailable )
    .setInt( "deptid", deptid )
    .executeUpdate();

答案 1 :(得分:0)

如果需要,您也可以使用saveOrUpdate()功能。在this link中有一个示例和一些文档。