How do I set the fetch mode for Criteria association?
Category: org.hibernate, viewed: 6320 time(s).
To set the fetching mode for association we can call the Criteria's setFetchMode() method. We can user the FetchMode.SELECT or FetchMode.JOIN.
package org.kodejava.example.hibernate.criteria;
import org.hibernate.*;
import org.hibernate.criterion.Restrictions;
import org.hibernate.cfg.AnnotationConfiguration;
import org.kodejava.example.hibernate.model.Recording;
import java.util.List;
public class FetchModeDemo {
private static final SessionFactory sessionFactory;
static {
try {
sessionFactory = new AnnotationConfiguration().
configure("hibernate.cfg.xml").
buildSessionFactory();
}
catch (Throwable ex) {
throw new ExceptionInInitializerError(ex);
}
}
public static Session getSession() throws HibernateException {
return sessionFactory.openSession();
}
@SuppressWarnings("unchecked")
public static void main(String[] args) {
final Session session = getSession();
try {
Criteria criteria = session.createCriteria(Recording.class)
.setFetchMode("artist", FetchMode.SELECT)
.setFetchMode("label", FetchMode.SELECT)
.add(Restrictions.eq("title", "Please Please Me"));
List<Recording> recordings = criteria.list();
for (Recording recording : recordings) {
System.out.println("Recording = " + recording.getTitle());
System.out.println("Artist = " + recording.getArtist().getName());
}
} finally {
session.close();
}
}
}
Download Hundreds of Complimentary Industry Resources
Get hundreds of popular Industry magazines, white papers, webinars, podcasts, and more;
all available at no cost to you. With more than 600 complimentary offers, you'll find
plenty of titles to suit your professional interests and needs.
Click Here and Sign up today!