8

I have a problem with Hibernate Native Query. I have one SELECT that selects array slice (PostgreSQL database).

The problem is that hibernate recognizes the following part: ":300" from "SELECT my_array[1:300]..." as named parameter and I get the following exception: Not all named parameters have been set.

I tried to escape the colon (:) with ':' , '::' but with no success.

The Hibernate version is 3.2

3 Answers 3

4

I don't use PostgreSQL but if you don't find a proper solution for this problem you can implement an interceptor (extend EmptyInterceptor) and modify your query on onPrepareStatement(String sql).

Which means that you could be using something like my_array[1|300] and rewriting it as my_array[1:300] to workaround the named parameters problem.

Edit: I'm not 100% sure the above works (rewriting native SQL and whether the query parser would allow the special character). I've only done the above in HQL and criteria where I was passing the index hint as a query comment.

Sign up to request clarification or add additional context in comments.

Comments

3

The colon is not escapeable in Hibernate itself (known Bug since 2005).

Comments

1
create function array_slice(a anyarray, start int4, end int4) returns anyarray as   
$$
    SELECT a[start:end];
$$
language(sql);

Now call this function instead. Did not try it but it will work somehow like this.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.