Hibernate n+1 select问题的解决

    SessionFactory sessionFactory = getHibernateTemplate().getSessionFactory();
    Session session = sessionFactory.openSession();
    Criteria criteria = session.createCriteria(TbArea.class);

    criteria.setFetchMode("tbDepartmentTrees",FetchMode.JOIN);
    List<TbArea> list = criteria.list();
    session.close();
    return list;
        //return findAll(TbArea.class); (会产生n+1问题)


参考
session = sessionFactory.openSession();
        Criteria criteria = session.createCriteria(One.class);
        criteria.add(Expression.eq("COneId",new Integer(1)));
        one = (One)criteria.setFetchMode("twos",FetchMode.JOIN).setFetchMode("twos.threes",FetchMode.JOIN).setFetchMode("twos.threes.fours",FetchMode.JOIN).uniqueResult();
        session.close();

猜你喜欢

转载自cfyme.iteye.com/blog/1132874