Using Hibernate query : colon gets treated as parameter / escaping colon Using Hibernate query : colon gets treated as parameter / escaping colon postgresql postgresql

Using Hibernate query : colon gets treated as parameter / escaping colon


I just had this problem, had to use casts, so I tried some stuff to make it work. Turns out you escape : in hibernate with \

However, in java, to print \ to begin with, you have to escape it with \.
So, if you want to put a : in your SQL hibernate query, you have to write it like: \\:

And if you wanted to cast in PostgreSQL, such as in my case, you would have to, for example: field\\:\\:int if you wanted to cast some field as an integer.


Since you're on Postgres, I would change the date() completely:

return sessionFactory.getCurrentSession().        createQuery("FROM Weather WHERE city_id = :id AND date " +                "BETWEEN current_date AND (current_date + (integer :days - 1))").                setInteger("id", city_id).setString("days", days).list();

See http://www.postgresql.org/docs/8.2/static/functions-datetime.html