As far as I know the only option for UPDATE statements offered by Hibernate is to use HQL or SQL. Criterias are only for SELECTing.
Unless you are updating thousand or millions of objects there is nothing wrong with loading them into memory, updating their fields, and then let Hibernate worry about sending the UPDATE to the database. That is the object-oriented approach. Trying to mix this with DML-style operations may be a source of problems. For example, the documentation says:
Quote:
This means that manipulating data directly in the database (using the SQL Data Manipulation Language (DML) the statements: INSERT, UPDATE, DELETE) will not affect in-memory state.
Meaning that entities that you already have loaded into memory in the same session are not affected by the update so they may now contain stale data. An even worse scenario is that the in-memory entity is dirty and then the next flush/commit will overwrite what was sent with the UPDATE.