This post shows how to perform an update query using HQL in Hibernate application.
Hibernate Query Language (HQL) is an object-oriented query language, similar to SQL, but instead of operating on tables and columns, HQL works with persistent objects and their properties. HQL queries are translated by Hibernate into conventional SQL queries, which in turn perform an action on a database.
Hibernate Query Language (HQL) is an object-oriented query language, similar to SQL, but instead of operating on tables and columns, HQL works with persistent objects and their properties. HQL queries are translated by Hibernate into conventional SQL queries, which in turn perform an action on a database.
HQL Update Query Syntex
The BNF for UPDATE statements is the same in HQL and JPQL:
update_statement ::=
update_clause [where_clause]
update_clause ::=
UPDATE entity_name [[AS] identification_variable]
SET update_item {, update_item}*
update_item ::=
[identification_variable.]{state_field | single_valued_object_field} = new_value
new_value ::=
scalar_expression | simple_entity_expression | NULL
HQL Update Query Example
Example: Update student firstName where id = 1:
public void updateStudent(Student student) {
Transaction transaction = null;
try (Session session = HibernateUtil.getSessionFactory().openSession()) {
// start a transaction
transaction = session.beginTransaction();
// save the student object
String hql = "UPDATE Student set firstName = :firstName " + "WHERE id = :studentId";
Query query = session.createQuery(hql);
query.setParameter("firstName", student.getFirstName());
query.setParameter("studentId", 1);
int result = query.executeUpdate();
System.out.println("Rows affected: " + result);
// commit transaction
transaction.commit();
} catch (Exception e) {
if (transaction != null) {
transaction.rollback();
}
e.printStackTrace();
}
}
More examples:
int updatedEntities = entityManager.createQuery( "update Person p " + "set p.name = :newName " + "where p.name = :oldName" ) .setParameter( "oldName", oldName ) .setParameter( "newName", newName ) .executeUpdate(); int updatedEntities = session.createQuery( "update Person " + "set name = :newName " + "where name = :oldName" ) .setParameter( "oldName", oldName ) .setParameter( "newName", newName ) .executeUpdate(); int updatedEntities = session.createQuery( "update versioned Person " + "set name = :newName " + "where name = :oldName" ) .setParameter( "oldName", oldName ) .setParameter( "newName", newName ) .executeUpdate();
Hibernate Framework
Java
Comments
Post a Comment