HQL unexpected AST node: {vector}

grails, hibernate, hql, java

Solution

Oh, it turns out that I needed to enclose `:franchisees` in parentheses:

from User u where 
(u.parentOrganisation = :topLevelOrganisation or u.parentOrganisation in (:franchisees)) 
and u.parentOrganisation.deleted = false 
and u.active = true

Problem

I'm trying to write an HQL query to grab a list of users that belong to a particular organisation, or any franchisee from a list of franchisees, however hibernate isn't able to parse it. I can't figure out why. Here is the HQL: ``` from User u where (u.parentOrganisation = :topLevelOrganisation or u.parentOrganisation in :franchisees) and u.parentOrganisation.deleted = false and u.active = true ``` This is the error that hibernate spits out: ``` unexpected AST node: {vector} [from com.myapp.User u where (u.parentOrganisation = :topLevelOrganisation or u.parentOrganisation in :franchisees0_, :franchisees 1_, :franchisees2_) and u.parentOrganisation.deleted = false and u.active = true]. Stacktrace follows: Message: unexpected AST node: {vector} [from com.myapp.User u where (u.parentOrganisation = :topLevelOrganisation or u.parentOrganisation in :franchisees0_, :fr anchisees1_, :franchisees2_) and u.parentOrganisation.deleted = false and u.active = true] ``` If I take out the `or u.parentOrganisation in :franchisees` bit, so my query looks like this: ``` from User u where (u.parentOrganisation = :topLevelOrganisation) and u.parentOrganisation.deleted = false and u.active = true ``` Then it works fine. What's wrong with my syntax? Why is hibernate complaining about that extra clause?

Original source