Perhaps I've been confused by what generator="sequence" does: I use SQLServer, and that doesn't support the sequence generator. I've always assumed that sequence = identity; however, the example in section 6.4 of the ref docs supports your mapping, with one minor caveat: add
not-null="true" in the key of the <set> mapping, so that hibernate knows not to insert children (Lookup) before parents (LookupCategory).
Given this, the cross join is no longer necessary and you don't need to change you mapping (beyond adding that not-null="true"). Your HQL query now becomes
Code:
select lu from LookupCategory lc
join lc.lookupValues lu
where lc.value = :Val