I'm afraid this won't work. You're defining a one-to-many _relationship_ between a parent status object and its children. However, this relationship simply doesn't exist in your database.
You've told hibernate to use the ID field from status to identify the parent object (key column="id"). This is what hibernate does:
1. load the parent object, say status.1
2. run the query to initialize the collection, say status.2 and status.3 returned
3. use the ID field from status.2 to find the parent - returns status.2
4. add child status.2 to collection of parent status.2
Because your query excludes the parent object you'll get an empty list every time.
BTW, I think you're getting a null pointer exception rather than an empty list because you need to include a load-collection element in the sql-query. This is from the docs ch16:
Code:
<set name="employments" inverse="true">
<key/>
<one-to-many class="Employment"/>
<loader query-ref="employments"/>
</set>
<sql-query name="employments">
*****
<load-collection alias="emp" role="Person.employments"/>
*****
SELECT {emp.*}
FROM EMPLOYMENT emp
WHERE EMPLOYER = :id
ORDER BY STARTDATE ASC, EMPLOYEE ASC
</sql-query>