Hibernate HQL delete with and

From the Output you provided

uid: 123 and pid: 1
Hibernate: delete from votes where uid=? and pid=?
1

it is clear that query.executeUpdate() is returning 1. The method returns the number of entities updated or deleted. This means that 1 row has been updated or deleted, which is okay.

Try doing a session.flush() to flush the session, or a session.evict() to remove the object from the session.


You need to begin and commit a transaction.

Transaction transaction = session.beginTransaction();
try {
  // your code
  String hql = "delete from Vote where uid= :uid AND pid= :pid";
  Query query = session.createQuery(hql);
  System.out.println(user.getUid() + " and pid: " + pid);
  query.setString("uid", user.getUid());
  query.setInteger("pid", pid);
  System.out.println(query.executeUpdate());
  // your code end

  transaction.commit();
} catch (Throwable t) {
  transaction.rollback();
  throw t;
}

It is also possible that you need to close the session before the changes will be visible in the database.