Scenario: load an Order inside a transaction, return it, then touch the lazy items collection AFTER the transaction (and its Hibernate session) has closed. order.getItems().size() -> org.hibernate.LazyInitializationException: Cannot lazily initialize collection of role 'com.ankurm.jdbcvsjpa.jpa.Order.items' with key '34' (no session) This is the LazyInitializationException every JPA tutorial warns about and few show you actually triggering. It is not a bug: the collection genuinely has not been read from the database yet, and the session that could read it is gone.