How can I write the sql query select sum(amount * direction) from transactions into hibernate criteria ?
Projections is the key word to use aggregate functions with hibnerate criteria.
roseindia has a short example for implementing a SELECT SUM(...) query. Looks pretty close to your problem.
Here's another forum topic that includes a working example for a SUM(col1 * col2) expression and the original poster had similiar problems with exceptions before.