Are you calling size() before the transaction ends?
size() is being called in a JSP page, i.e. after the http request, so presumably after the session has been closed?
If you want to know the size of a collection it has to be fetched. So using fetch-type eager is the best approach.