Java hibernate如何创建一个Criteria对象?

本示例向您展示如何创建HibernateCriteria类的实例。要创建一个Criteria我们调用Session对象的工厂方法并传递持久性类作为参数。要执行Criteria查询,我们只需调用list()方法。

package org.nhooo.example.hibernate.criteria;

import org.hibernate.SessionFactory;
import org.hibernate.Session;
import org.hibernate.HibernateException;
import org.hibernate.Criteria;
import org.hibernate.cfg.Configuration;
import org.nhooo.example.hibernate.model.Track;

import java.util.List;

public class CreateCriteriaDemo {
    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的实例,我们调用createCriteria()
            // Session对象的工厂方法。
            Criteria criteria = session.createCriteria(Track.class);

            // 调用list()方法以检索Tracks的集合
            // 从数据库中。
            List<Track> tracks = criteria.list();

            for (Track t : tracks) {
                System.out.println("Title     = " + t.getTitle());
                System.out.println("Artist    = " + t.getArtist().getName());
                System.out.println("Genre     = " + t.getGenre().getName());
                System.out.println("Record    = " + t.getRecord().getTitle());
                System.out.println("Label     = " + t.getRecord().getLabel().getName());
                System.out.println("-----------------------------------");
            }
        }
    }
}