我这样做是为了对实体对象进行延迟加载:
@Transactional(readOnly = true) public T getWithAssociation(final long id, String association) { Session session = sessionFactory.getCurrentSession(); final Criteria crit = session.createCriteria(genericType); crit.setFetchMode(association, FetchMode.JOIN); crit.add(Property.forName("id").eq(id)); return (T) crit.uniqueResult(); }
我想与多个延迟加载的集合返回一个实体对象 加载的 ,我能做到这一点(通过在列表中,并设置超过联想单个标准是什么?):
@Transactional(readOnly = true) public T getWithAssociations(final long id, List<String> associations) { Session session = sessionFactory.getCurrentSession(); final Criteria crit = session.createCriteria(genericType); for(String association:associations) { crit.setFetchMode(association, FetchMode.JOIN); } crit.add(Property.forName("id").eq(id)); return (T) crit.uniqueResult(); }
是?
该文档包含以下内容:
List cats = sess.createCriteria(Cat.class) .add( Restrictions.like("name", "Fritz%") ) .setFetchMode("mate", FetchMode.EAGER) .setFetchMode("kittens", FetchMode.EAGER) .list();
该查询将通过外部联接获取伴侣和小猫。有关更多信息,请参见第20.1节“获取策略”。