复合查询的应用:
package com.inspur.test;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Expression;
import com.inspur.po.TAddress;
import com.inspur.po.TUser;
import junit.framework.TestCase;
public class TestCri extends TestCase{
Session session=null;
@Override
protected void setUp() throws Exception {
Configuration config=new Configuration().configure();
SessionFactory sessionFactory=config.buildSessionFactory();
session=sessionFactory.openSession();
}
@Override
protected void tearDown() throws Exception {
session.close();
}
// public void testCri(){
// TAddress address=null;
// TUser user=null;
// Set addresses=null;
// Criteria criteria=session.createCriteria(TUser.class);
// List list=criteria.list();
// for(int i=0;i<list.size();i++){
// user=(TUser)list.get(i);
// System.out.println(user.getName());
// addresses=user.getTAddresses();
// Iterator it=addresses.iterator();
// while(it.hasNext()){
// address=(TAddress)it.next();
// System.out.println(address.getAddress());
//
// }
//
//
// }
//
// }
public void testCompositeQuery(){
TUser user=null;
TAddress address=null;
Set addresses=null;
Criteria criteria=session.createCriteria(TUser.class);
Criteria addCriteria=criteria.createCriteria("TAddresses");
addCriteria.add(Expression.like("address", "%hongkang%"));
List list=null;
list=criteria.list();
for(int i=0;i<list.size();i++){
user=(TUser)list.get(i);
System.out.println(user.getName());
addresses=user.getTAddresses();
Iterator it=addresses.iterator();
while(it.hasNext()){
address=(TAddress)it.next();
System.out.println(address.getAddress());
}
}
}
}
复合查询是指在对象的复合属性上面,针对复合属性中的对象的属性指定查询条件,返回的是criteria中使用的Class类所描述的对象,然后有返回对象来获得复合属性中包含的对象以及对象属性。