在hibernate中要实现动态查询或者子查询等可以用DetachedCriteria来动态构造sql语句
比如要实现类似这样一个sql语句:
select * from Table1 t1 where t1. field1 in(select field2 from Table2 t2 where t2. field3= value)
比如要实现类似这样一个sql语句:
select * from Table1 t1 where t1. field1 in(select field2 from Table2 t2 where t2. field3= value)
实现方法:
Session session = HibernateSessionFactory.currentSession();
Criteria criteria = session.createCriteria(Table1.class);
DetachedCriteria dc = DetachedCriteria.forClass(Table2.class).setProjection(Property.forName("field2"));
dc.add(Expression.eq("field3",value));
criteria.add(Property.forName("field1").in(dc));
List list = criteria.list()
HibernateSessionFactory.closeSession();