Hibernate's outer join fetch behaviour is controlled with Hibernate's global configuration option "hibernate.max_fetch_depth" (maximum depth of outer join fetching). Recommended values for the fetch depth depend on the join performance and the size of database tables.Test your application with low values less than 4 and change the number appropriately while tuning your application. Check it along with "hibernate.show_sql" set to true to see the queries but this is not the only factor that affects your queries.