Escaping colons in hibernate createSQLQuery

Posted by Stratosgear on Stack Overflow See other posts from Stack Overflow or by Stratosgear
Published on 2011-01-17T10:32:37Z Indexed on 2011/01/17 10:53 UTC
Read the original article Hit count: 318

Filed under:
|
|

I am confused on how I can create an SQL statement containing colons. I am trying to create a view and I am using (notice the double colons):

create view MyView as (
  SELECT 
    tableA.colA as colA,
    tableB.colB as colB, 
    round(tableB.colD / 1024)::numeric, 2) as calcValue,
  FROM 
    tableA, tableB
  WHERE
    tableA.colC = 'someValue'
);

This is a postgres query and I am forced to use the double colons (::) in order to correctly run the statement.

I then pass the above statement through:

s.createSQLQuery(myQuery).executeUpdate();

and I get a:

Exception in thread "main" org.hibernate.exception.DataException: \
    could not execute native bulk manipulation query
 at org.hibernate.exception.SQLStateConverter.convert(\
    SQLStateConverter.java:102)
    ... more stacktrace...

with an output of my above statement changed as (notice the question mark):

create view MyView as (
  SELECT 
    tableA.colA as colA,
    tableB.colB as colB, 
    round(tableB.colD / 1024)?, 2) as calcValue,
  FROM 
    tableA, tableB
  WHERE
    tableA.colC = 'someValue'
);

Obviously, hibernate confuses my colons with named parameters.

Is there a way to escape the colons (a google suggestion that mentions that a single colon is escaped as a double colon does NOT work) or another way of running this statement?

Thanks.

© Stack Overflow or respective owner

Related posts about hibernate

Related posts about postgresql