Quote:
does NOT use the 2nd level cache (even though I'm selecting by id)
Even though you're using an entity Id, you're doing a Criteria/Query search rather than a direct lookup (ie session.load/get). Criteria/Query searches don't read from the 2nd level cache unless you setCacheable(true) on them. and have the QueryCache enabled (see the documentation for details).
Of course this then means that your search will return the exact same results even if applicants have been added/deleted by another process (only an issue if Hibernate doesn't have exclusive use of the relevant tables in the database). At least, until the QueryCache expires (as configured) or some other process comes along and forces a refresh.
Hope this helps,
John