Is it necessary for rownum = 1 with Query.createQuery().getSingleResult()?
The only difference between the two queries is that the 2nd will always return 1 row. Even if the table is empty or just has 0 rows with reference=X, the result will be 1 row with null in the min(date) column.

The first query will return no row in this case. The and rownum=1 is useless and does not affect anything for the specific query.

Test at SQLfiddle.