⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 criteriaquerytest.java

📁 介绍了hibernate的入门有一些基本常用的事例
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
//$Id: CriteriaQueryTest.java,v 1.23 2005/02/21 14:40:58 oneovthafew Exp $package org.hibernate.test.criteria;import java.util.List;import java.util.Map;import junit.framework.Test;import junit.framework.TestSuite;import org.hibernate.Criteria;import org.hibernate.FetchMode;import org.hibernate.Hibernate;import org.hibernate.Session;import org.hibernate.Transaction;import org.hibernate.criterion.DetachedCriteria;import org.hibernate.criterion.Expression;import org.hibernate.criterion.MatchMode;import org.hibernate.criterion.Order;import org.hibernate.criterion.Projection;import org.hibernate.criterion.Projections;import org.hibernate.criterion.Property;import org.hibernate.criterion.Restrictions;import org.hibernate.criterion.Subqueries;import org.hibernate.dialect.HSQLDialect;import org.hibernate.test.TestCase;import org.hibernate.transform.AliasToBeanResultTransformer;import org.hibernate.type.Type;import org.hibernate.util.SerializationHelper;/** * @author Gavin King */public class CriteriaQueryTest extends TestCase {		public CriteriaQueryTest(String str) {		super(str);	}		public void testSubselect() {				if ( getDialect() instanceof HSQLDialect ) return;				Session session = openSession();		Transaction t = session.beginTransaction();		Course course = new Course();		course.setCourseCode("HIB");		course.setDescription("Hibernate Training");		session.persist(course);				Student gavin = new Student();		gavin.setName("Gavin King");		gavin.setStudentNumber(232);		session.persist(gavin);		Enrolment enrolment2 = new Enrolment();		enrolment2.setCourse(course);		enrolment2.setCourseCode(course.getCourseCode());		enrolment2.setSemester((short) 3);		enrolment2.setYear((short) 1998);		enrolment2.setStudent(gavin);		enrolment2.setStudentNumber(gavin.getStudentNumber());		gavin.getEnrolments().add(enrolment2);		session.persist(enrolment2);				DetachedCriteria dc = DetachedCriteria.forClass(Student.class)			.add( Property.forName("studentNumber").eq( new Long(232) ) )			.setProjection( Property.forName("name") );		session.createCriteria(Student.class)			.add( Subqueries.propertyEqAll("name", dc) )			.list();				session.createCriteria(Student.class)			.add( Subqueries.exists(dc) )			.list();			session.createCriteria(Student.class)		.add( Property.forName("name").eqAll(dc) )		.list();			session.createCriteria(Student.class)			.add( Subqueries.in("Gavin King", dc) )			.list();				DetachedCriteria dc2 = DetachedCriteria.forClass(Student.class, "st")			.add( Property.forName("st.studentNumber").eqProperty("e.studentNumber") )			.setProjection( Property.forName("name") );				session.createCriteria(Enrolment.class, "e")			.add( Subqueries.eq("Gavin King", dc2) )			.list();		//TODO: join in subselect		/*DetachedCriteria dc3 = DetachedCriteria.forClass(Student.class, "st")			.createCriteria("enrolments")				.createCriteria("course")					.add( Property.forName("description").eq("Hibernate Training") )					.setProjection( Property.forName("st.name") );			session.createCriteria(Enrolment.class, "e")			.add( Subqueries.eq("Gavin King", dc3) )			.list();*/		session.delete(enrolment2);		session.delete(gavin);		session.delete(course);		t.commit();		session.close();			}		public void testDetachedCriteria() {				DetachedCriteria dc = DetachedCriteria.forClass(Student.class)			.add( Property.forName("name").eq("Gavin King") )			.addOrder( Order.asc("studentNumber") )			.setProjection( Property.forName("studentNumber") );				byte[] bytes = SerializationHelper.serialize(dc);				dc = (DetachedCriteria) SerializationHelper.deserialize(bytes);				Session session = openSession();		Transaction t = session.beginTransaction();		Student gavin = new Student();		gavin.setName("Gavin King");		gavin.setStudentNumber(232);		Student bizarroGavin = new Student();		bizarroGavin.setName("Gavin King");		bizarroGavin.setStudentNumber(666);		session.persist(bizarroGavin);		session.persist(gavin);				List result = dc.getExecutableCriteria(session)			.setMaxResults(3)			.list();				assertEquals( result.size(), 2 );		assertEquals( result.get(0), new Long(232) );		assertEquals( result.get(1), new Long(666) );				session.delete(gavin);		session.delete(bizarroGavin);		t.commit();		session.close();	}		public void testProjectionCache() {		Session s = openSession();		Transaction t = s.beginTransaction();				Course course = new Course();		course.setCourseCode("HIB");		course.setDescription("Hibernate Training");		s.save(course);				Student gavin = new Student();		gavin.setName("Gavin King");		gavin.setStudentNumber(666);		s.save(gavin);				Student xam = new Student();		xam.setName("Max Rydahl Andersen");		xam.setStudentNumber(101);		s.save(xam);				Enrolment enrolment1 = new Enrolment();		enrolment1.setCourse(course);		enrolment1.setCourseCode(course.getCourseCode());		enrolment1.setSemester((short) 1);		enrolment1.setYear((short) 1999);		enrolment1.setStudent(xam);		enrolment1.setStudentNumber(xam.getStudentNumber());		xam.getEnrolments().add(enrolment1);		s.save(enrolment1);				Enrolment enrolment2 = new Enrolment();		enrolment2.setCourse(course);		enrolment2.setCourseCode(course.getCourseCode());		enrolment2.setSemester((short) 3);		enrolment2.setYear((short) 1998);		enrolment2.setStudent(gavin);		enrolment2.setStudentNumber(gavin.getStudentNumber());		gavin.getEnrolments().add(enrolment2);		s.save(enrolment2);				List list = s.createCriteria(Enrolment.class)			.createAlias("student", "s")			.createAlias("course", "c")			.add( Restrictions.isNotEmpty("s.enrolments") )			.setProjection( Projections.projectionList()					.add( Projections.property("s.name") )					.add( Projections.property("c.description") )			)			.setCacheable(true)			.list();				assertEquals( list.size(), 2 );		assertEquals( ( (Object[]) list.get(0) ).length, 2 );		assertEquals( ( (Object[]) list.get(1) ).length, 2 );				t.commit();		s.close();		s = openSession();		t = s.beginTransaction();				s.createCriteria(Enrolment.class)			.createAlias("student", "s")			.createAlias("course", "c")			.add( Restrictions.isNotEmpty("s.enrolments") )			.setProjection( Projections.projectionList()					.add( Projections.property("s.name") )					.add( Projections.property("c.description") )			)			.setCacheable(true)			.list();			assertEquals( list.size(), 2 );		assertEquals( ( (Object[]) list.get(0) ).length, 2 );		assertEquals( ( (Object[]) list.get(1) ).length, 2 );				t.commit();		s.close();		s = openSession();		t = s.beginTransaction();				s.createCriteria(Enrolment.class)			.createAlias("student", "s")			.createAlias("course", "c")			.add( Restrictions.isNotEmpty("s.enrolments") )			.setProjection( Projections.projectionList()					.add( Projections.property("s.name") )					.add( Projections.property("c.description") )			)			.setCacheable(true)			.list();				assertEquals( list.size(), 2 );		assertEquals( ( (Object[]) list.get(0) ).length, 2 );		assertEquals( ( (Object[]) list.get(1) ).length, 2 );				s.delete(enrolment1);		s.delete(enrolment2);		s.delete(course);		s.delete(gavin);		s.delete(xam);			t.commit();		s.close();}			public void testProjections() {		Session s = openSession();		Transaction t = s.beginTransaction();				Course course = new Course();		course.setCourseCode("HIB");		course.setDescription("Hibernate Training");		s.save(course);				Student gavin = new Student();		gavin.setName("Gavin King");		gavin.setStudentNumber(667);		s.save(gavin);				Student xam = new Student();		xam.setName("Max Rydahl Andersen");		xam.setStudentNumber(101);		s.save(xam);				Enrolment enrolment = new Enrolment();		enrolment.setCourse(course);		enrolment.setCourseCode(course.getCourseCode());		enrolment.setSemester((short) 1);		enrolment.setYear((short) 1999);		enrolment.setStudent(xam);		enrolment.setStudentNumber(xam.getStudentNumber());		xam.getEnrolments().add(enrolment);		s.save(enrolment);				enrolment = new Enrolment();		enrolment.setCourse(course);		enrolment.setCourseCode(course.getCourseCode());		enrolment.setSemester((short) 3);		enrolment.setYear((short) 1998);		enrolment.setStudent(gavin);		enrolment.setStudentNumber(gavin.getStudentNumber());		gavin.getEnrolments().add(enrolment);		s.save(enrolment);				//s.flush();				Integer count = (Integer) s.createCriteria(Enrolment.class)			.setProjection( Projections.count("studentNumber").setDistinct() )			.uniqueResult();		assertEquals(count, new Integer(2));				Object object = s.createCriteria(Enrolment.class)			.setProjection( Projections.projectionList()					.add( Projections.count("studentNumber") )					.add( Projections.max("studentNumber") )					.add( Projections.min("studentNumber") )					.add( Projections.avg("studentNumber") )			)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -