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

📄 criteriaquerytest.java

📁 hibernate 开源框架的代码 jar包希望大家能喜欢
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		    .addOrder( Order.asc("stNumber") )			.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)			.list();				assertEquals(1, resultWithMaps.size());		Map m1 = (Map) resultWithMaps.get(0);				assertEquals(new Long(667), m1.get("stNumber"));		assertEquals(course.getCourseCode(), m1.get("cCode"));				resultWithMaps = s.createCriteria(Enrolment.class)			.setProjection( Projections.property("studentNumber").as("stNumber") )		    .addOrder( Order.desc("stNumber") )			.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)			.list();				assertEquals(2, resultWithMaps.size());		Map m0 = (Map) resultWithMaps.get(0);		m1 = (Map) resultWithMaps.get(1);				assertEquals(new Long(101), m1.get("stNumber"));		assertEquals(new Long(667), m0.get("stNumber"));			List resultWithAliasedBean = s.createCriteria(Enrolment.class)			.createAlias("student", "st")			.createAlias("course", "co")			.setProjection( Projections.projectionList()					.add( Projections.property("st.name"), "studentName" )					.add( Projections.property("co.description"), "courseDescription" )			)			.addOrder( Order.desc("studentName") )			.setResultTransformer( Transformers.aliasToBean(StudentDTO.class) )			.list();				assertEquals(2, resultWithAliasedBean.size());				StudentDTO dto = (StudentDTO) resultWithAliasedBean.get(0);		assertNotNull(dto.getDescription());		assertNotNull(dto.getName());			s.createCriteria(Student.class)			.add( Restrictions.like("name", "Gavin", MatchMode.START) )			.addOrder( Order.asc("name") )			.createCriteria("enrolments", "e")				.addOrder( Order.desc("year") )				.addOrder( Order.desc("semester") )			.createCriteria("course","c")				.addOrder( Order.asc("description") )				.setProjection( Projections.projectionList()					.add( Projections.property("this.name") )					.add( Projections.property("e.year") )					.add( Projections.property("e.semester") )					.add( Projections.property("c.courseCode") )					.add( Projections.property("c.description") )				)			.uniqueResult();					Projection p1 = Projections.projectionList()			.add( Projections.count("studentNumber") )			.add( Projections.max("studentNumber") )			.add( Projections.rowCount() );				Projection p2 = Projections.projectionList()			.add( Projections.min("studentNumber") )			.add( Projections.avg("studentNumber") )			.add( Projections.sqlProjection(					"1 as constOne, count(*) as countStar", 					new String[] { "constOne", "countStar" }, 					new Type[] { Hibernate.INTEGER, Hibernate.INTEGER }			) );			Object[] array = (Object[]) s.createCriteria(Enrolment.class)			.setProjection( Projections.projectionList().add(p1).add(p2) )			.uniqueResult();				assertEquals( array.length, 7 );				List list = s.createCriteria(Enrolment.class)			.createAlias("student", "st")			.createAlias("course", "co")			.setProjection( Projections.projectionList()					.add( Projections.groupProperty("co.courseCode") )					.add( Projections.count("st.studentNumber").setDistinct() )					.add( Projections.groupProperty("year") )			)			.list();				assertEquals( list.size(), 2 );				Object g = s.createCriteria(Student.class)			.add( Restrictions.idEq( new Long(667) ) )			.setFetchMode("enrolments", FetchMode.JOIN)			//.setFetchMode("enrolments.course", FetchMode.JOIN) //TODO: would love to make that work...			.uniqueResult();		assertSame(g, gavin);		s.delete(gavin);		s.delete(xam);		s.delete(course);				t.commit();		s.close();	}			public void testProjectionsUsingProperty() {		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( Property.forName("studentNumber").count().setDistinct() )			.uniqueResult();		assertEquals(count, new Integer(2));				Object object = s.createCriteria(Enrolment.class)			.setProjection( Projections.projectionList()					.add( Property.forName("studentNumber").count() )					.add( Property.forName("studentNumber").max() )					.add( Property.forName("studentNumber").min() )					.add( Property.forName("studentNumber").avg() )			)			.uniqueResult();		Object[] result = (Object[])object; 				assertEquals(new Integer(2),result[0]);		assertEquals(new Long(667),result[1]);		assertEquals(new Long(101),result[2]);		assertEquals(384.0, ( (Double) result[3] ).doubleValue(), 0.01);						s.createCriteria(Enrolment.class)		    .add( Property.forName("studentNumber").gt( new Long(665) ) )		    .add( Property.forName("studentNumber").lt( new Long(668) ) )		    .add( Property.forName("courseCode").like("HIB", MatchMode.START) )		    .add( Property.forName("year").eq( new Short( (short) 1999 ) ) )		    .addOrder( Property.forName("studentNumber").asc() )			.uniqueResult();			List resultWithMaps = s.createCriteria(Enrolment.class)			.setProjection( Projections.projectionList()					.add( Property.forName("studentNumber").as("stNumber") )					.add( Property.forName("courseCode").as("cCode") )			)		    .add( Property.forName("studentNumber").gt( new Long(665) ) )		    .add( Property.forName("studentNumber").lt( new Long(668) ) )		    .addOrder( Property.forName("studentNumber").asc() )			.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)			.list();				assertEquals(1, resultWithMaps.size());		Map m1 = (Map) resultWithMaps.get(0);				assertEquals(new Long(667), m1.get("stNumber"));		assertEquals(course.getCourseCode(), m1.get("cCode"));				resultWithMaps = s.createCriteria(Enrolment.class)			.setProjection( Property.forName("studentNumber").as("stNumber") )		    .addOrder( Order.desc("stNumber") )			.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)			.list();				assertEquals(2, resultWithMaps.size());		Map m0 = (Map) resultWithMaps.get(0);		m1 = (Map) resultWithMaps.get(1);				assertEquals(new Long(101), m1.get("stNumber"));		assertEquals(new Long(667), m0.get("stNumber"));			List resultWithAliasedBean = s.createCriteria(Enrolment.class)			.createAlias("student", "st")			.createAlias("course", "co")			.setProjection( Projections.projectionList()					.add( Property.forName("st.name").as("studentName") )					.add( Property.forName("co.description").as("courseDescription") )			)			.addOrder( Order.desc("studentName") )			.setResultTransformer( Transformers.aliasToBean(StudentDTO.class) )			.list();				assertEquals(2, resultWithAliasedBean.size());				StudentDTO dto = (StudentDTO) resultWithAliasedBean.get(0);		assertNotNull(dto.getDescription());		assertNotNull(dto.getName());			s.createCriteria(Student.class)			.add( Restrictions.like("name", "Gavin", MatchMode.START) )			.addOrder( Order.asc("name") )			.createCriteria("enrolments", "e")				.addOrder( Order.desc("year") )				.addOrder( Order.desc("semester") )			.createCriteria("course","c")				.addOrder( Order.asc("description") )				.setProjection( Projections.projectionList()					.add( Property.forName("this.name") )					.add( Property.forName("e.year") )					.add( Property.forName("e.semester") )					.add( Property.forName("c.courseCode") )					.add( Property.forName("c.description") )				)			.uniqueResult();					Projection p1 = Projections.projectionList()			.add( Property.forName("studentNumber").count() )			.add( Property.forName("studentNumber").max() )			.add( Projections.rowCount() );				Projection p2 = Projections.projectionList()			.add( Property.forName("studentNumber").min() )			.add( Property.forName("studentNumber").avg() )			.add( Projections.sqlProjection(					"1 as constOne, count(*) as countStar", 					new String[] { "constOne", "countStar" }, 					new Type[] { Hibernate.INTEGER, Hibernate.INTEGER }			) );			Object[] array = (Object[]) s.createCriteria(Enrolment.class)			.setProjection( Projections.projectionList().add(p1).add(p2) )			.uniqueResult();				assertEquals( array.length, 7 );				List list = s.createCriteria(Enrolment.class)			.createAlias("student", "st")			.createAlias("course", "co")			.setProjection( Projections.projectionList()					.add( Property.forName("co.courseCode").group() )					.add( Property.forName("st.studentNumber").count().setDistinct() )					.add( Property.forName("year").group() )			)			.list();				assertEquals( list.size(), 2 );				s.delete(gavin);		s.delete(xam);		s.delete(course);				t.commit();		s.close();	}	public void testRestrictionOnSubclassCollection() {		Session s = openSession();		Transaction t = s.beginTransaction();		s.createCriteria( Reptile.class )				.add( Restrictions.isEmpty( "offspring" ) )				.list();		s.createCriteria( Reptile.class )				.add( Restrictions.isNotEmpty( "offspring" ) )				.list();		t.rollback();		s.close();	}	public void testClassProperty() {		Session s = openSession();		Transaction t = s.beginTransaction();		// HQL: from Animal a where a.mother.class = Reptile		Criteria c = s.createCriteria(Animal.class,"a")			.createAlias("mother","m")			.add( Property.forName("m.class").eq(Reptile.class) );		c.list();		t.rollback();		s.close();	}	public void testProjectedId() {		Session s = openSession();		Transaction t = s.beginTransaction();		s.createCriteria(Course.class).setProjection( Projections.property("courseCode") ).list();		s.createCriteria(Course.class).setProjection( Projections.id() ).list();		t.rollback();		s.close();	}	public void testSubcriteriaJoinTypes() {		Session session = openSession();		Transaction t = session.beginTransaction();		Course courseA = new Course();		courseA.setCourseCode("HIB-A");		courseA.setDescription("Hibernate Training A");		session.persist(courseA);		Course courseB = new Course();		courseB.setCourseCode("HIB-B");		courseB.setDescription("Hibernate Training B");		session.persist(courseB);		Student gavin = new Student();		gavin.setName("Gavin King");		gavin.setStudentNumber(232);		gavin.setPreferredCourse(courseA);		session.persist(gavin);		Student leonardo = new Student();		leonardo.setName("Leonardo Quijano");		leonardo.setStudentNumber(233);		leonardo.setPreferredCourse(courseB);		session.persist(leonardo);		Student johnDoe = new Student();		johnDoe.setName("John Doe");		johnDoe.setStudentNumber(235);		johnDoe.setPreferredCourse(null);		session.persist(johnDoe);		List result = session.createCriteria( Student.class )				.setProjection( Property.forName("preferredCourse.courseCode") )				.createCriteria( "preferredCourse", Criteria.LEFT_JOIN )						.addOrder( Order.asc( "courseCode" ) )						.list();		assertEquals( 3, result.size() );		// can't be sure of NULL comparison ordering aside from they should		// either come first or last		if ( result.get( 0 ) == null ) {			assertEquals( "HIB-A", result.get(1) );			assertEquals( "HIB-B", result.get(2) );		}		else {			assertNull( result.get(2) );			assertEquals( "HIB-A", result.get(0) );			assertEquals( "HIB-B", result.get(1) );		}		result = session.createCriteria( Student.class )				.setFetchMode( "preferredCourse", FetchMode.JOIN )				.createCriteria( "preferredCourse", Criteria.LEFT_JOIN )						.addOrder( Order.asc( "courseCode" ) )						.list();		assertEquals( 3, result.size() );		assertNotNull( result.get(0) );		assertNotNull( result.get(1) );		assertNotNull( result.get(2) );		result = session.createCriteria( Student.class )				.setFetchMode( "preferredCourse", FetchMode.JOIN )				.createAlias( "preferredCourse", "pc", Criteria.LEFT_JOIN )				.addOrder( Order.asc( "pc.courseCode" ) )				.list();		assertEquals( 3, result.size() );		assertNotNull( result.get(0) );		assertNotNull( result.get(1) );		assertNotNull( result.get(2) );		session.delete(gavin);		session.delete(leonardo);		session.delete(johnDoe);		session.delete(courseA);		session.delete(courseB);		t.commit();		session.close();	}}

⌨️ 快捷键说明

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