I also tried SELECT r FROM Project p INNER JOIN p.resources r WHERE EXISTS (SELECT c FROM Company c WHERE c.country = :country AND p.owner = c) but it complains that 'owner' is not a property in Person.
–
Adrian BerDec 6 '12 at 16:30

And as far as I know, a JOIN is INNER by default, so INNER can be omitted. Same goes for as. Then practically the solution is only the first part of what I gave and said it's not working.
–
Adrian BerDec 6 '12 at 21:00

Have you tried a simple where clause on owner.country ? SELECT resource FROM Project p INNER JOIN p.resources as resource where p.owner.country = :country
–
ssssteffffDec 7 '12 at 11:34