简体   繁体   中英

Update a column using hibernate

I have two classes Employee and Department .

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

 }


public class Department {
   int deptId;
   String deptName;
  }

I have created hibernate files files for both classes Department.hbm.xml and Employee.hbm.xml

I like to update the column isEmpAvailable in the table Employee basing on a deptid in Department table.

Here I am facing problem with update query which I am not clear after reading in online documentation

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

When i run the code the column doesn't get update. A error is thrown as Entity not recognized: update Employee set isEmpAvailable=? where deptid=?

I have read online docs which have methods of getHibernateTemplate() which have return type as integer. Here I like to update the database directy by calling dao.updateEmployee without any returntype. I am unable do it. Please suggest me

Update in hibernate is done this way :

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();

If you want you can also use the saveOrUpdate() function. In this link there is an example and some documentation.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM