要设置关联的提取模式,我们可以调用Criteria的setFetchMode()方法。我们可以使用FetchMode.SELECT或FetchMode.JOIN。
package org.nhooo.example.hibernate.criteria; import org.hibernate.*; import org.hibernate.cfg.Configuration; import org.hibernate.criterion.Restrictions; import org.nhooo.example.hibernate.model.Record; import java.util.List; public class FetchModeDemo { public static Session getSession() throws HibernateException { String cfg = "hibernate.cfg.xml"; SessionFactory sessionFactory = new Configuration().configure(cfg) .buildSessionFactory(); return sessionFactory.openSession(); } @SuppressWarnings("unchecked") public static void main(String[] args) { try (Session session = getSession()) { Criteria criteria = session.createCriteria(Record.class) .setFetchMode("artist", FetchMode.SELECT) .setFetchMode("label", FetchMode.SELECT) .add(Restrictions.eq("title", "Please Please Me")); List<Record> records = criteria.list(); for (Record record : records) { System.out.println("Recording = " + record.getTitle()); System.out.println("Artist = " + record.getArtist().getName()); } } } }