If you have the following simple criteria:
Criteria c = new Criteria();
c.add("work.percent_complete", 100, c.LESS_THAN);
it doesn't work on PG 8.0 but works on 7.3.
The reason is that in Criterion.appendPsTo, it calls:
params.add (value.toString());
and consequently on the preparedStatement setString is called.
Read this for more info:
http://archives.postgresql.org/pgsql-jdbc/2005-03/msg00060.php
In PG 7.3, the protocal version is V2 while in 8.0 is V3. In fact you
can still get the stuff to work in 8.0 if you specify
"protocolVersion=2" in the jdbc URL. However, I think this is a serious
issue and is not a long term solution and might break other databases
in the future.
SOLUTION:
I think the solution is not to call the "toString" in appendPsTo AND use
setObject in the prepared statement. I don't know if this works with all
databases.