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

📄 nativesqlqueriestest.java

📁 hibernate 开源框架的代码 jar包希望大家能喜欢
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		Person gavin = new Person("Gavin");		Employment emp = new Employment(gavin, jboss, "AU");		Serializable orgId = s.save(jboss);		Serializable orgId2 = s.save(ifa);		s.save(gavin);		s.save(emp);		t.commit();		s.close();		s = openSession();		t = s.beginTransaction();		Query namedQuery = s.getNamedQuery("AllEmploymentAsMapped");		List list = namedQuery.list();		assertEquals(1,list.size());		Employment emp2 = (Employment) list.get(0);		assertEquals(emp2.getEmploymentId(), emp.getEmploymentId() );		assertEquals(emp2.getStartDate().getDate(), emp.getStartDate().getDate() );		assertEquals(emp2.getEndDate(), emp.getEndDate() );		t.commit();		s.close();		s = openSession();		t = s.beginTransaction();		Query sqlQuery = s.getNamedQuery("EmploymentAndPerson");		sqlQuery.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);		list = sqlQuery.list();		assertEquals(1,list.size() );		Object res = list.get(0);		assertClassAssignability(res.getClass(),Map.class);		Map m = (Map) res;		assertEquals(2,m.size());		t.commit();		s.close();		s = openSession();		t = s.beginTransaction();		sqlQuery = s.getNamedQuery("organizationreturnproperty");		sqlQuery.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);		list = sqlQuery.list();		assertEquals(2,list.size() );		m = (Map) list.get(0);		assertTrue(m.containsKey("org"));		assertClassAssignability(m.get("org").getClass(), Organization.class);		assertTrue(m.containsKey("emp"));		assertClassAssignability(m.get("emp").getClass(), Employment.class);		assertEquals(2, m.size());		t.commit();		s.close();		s = openSession();		t = s.beginTransaction();		namedQuery = s.getNamedQuery("EmploymentAndPerson");		list = namedQuery.list();		assertEquals(1,list.size() );		Object[] objs = (Object[]) list.get(0);		assertEquals(2, objs.length);		emp2 = (Employment) objs[0];		gavin = (Person) objs[1];		s.delete(emp2);		s.delete(jboss);		s.delete(gavin);		s.delete(ifa);		t.commit();		s.close();	}	/* test for native sql composite id joins which has never been implemented */	public void testCompositeIdJoinsFailureExpected() {		Session s = openSession();		Transaction t = s.beginTransaction();		Person person = new Person();		person.setName( "Noob" );		Product product = new Product();		product.setProductId( new Product.ProductId() );		product.getProductId().setOrgid( "x" );		product.getProductId().setProductnumber( "1234" );		product.setName( "Hibernate 3" );		Order order = new Order();		order.setOrderId( new Order.OrderId() );		order.getOrderId().setOrdernumber( "1" );		order.getOrderId().setOrgid( "y" );		product.getOrders().add( order );		order.setProduct( product );		order.setPerson( person );		s.save( product );		s.save( order);		s.save( person );		t.commit();		s.close();		s = openSession();		t = s.beginTransaction();		Product p = (Product) s.createQuery( "from Product p join fetch p.orders" ).list().get(0);		assertTrue(Hibernate.isInitialized( p.getOrders()));		t.commit();		s.close();		s = openSession();		t = s.beginTransaction();		Object[] o =  (Object[]) s.createSQLQuery( "select\r\n" +				"        product.orgid as {product.id.orgid}," +				"        product.productnumber as {product.id.productnumber}," +				"        {prod_orders}.orgid as orgid3_1_,\r\n" +				"        {prod_orders}.ordernumber as ordernum2_3_1_,\r\n" +				"        product.name as {product.name}," +				"        {prod_orders.element.*}" +				/*"        orders.PROD_NO as PROD4_3_1_,\r\n" +				"        orders.person as person3_1_,\r\n" +				"        orders.PROD_ORGID as PROD3_0__,\r\n" +				"        orders.PROD_NO as PROD4_0__,\r\n" +				"        orders.orgid as orgid0__,\r\n" +				"        orders.ordernumber as ordernum2_0__ \r\n" +*/				"    from\r\n" +				"        Product product \r\n" +				"    inner join\r\n" +				"        TBL_ORDER {prod_orders} \r\n" +				"            on product.orgid={prod_orders}.PROD_ORGID \r\n" +				"            and product.productnumber={prod_orders}.PROD_NO" )				.addEntity( "product", Product.class )				.addJoin( "prod_orders", "product.orders" )				.list().get(0);		p = (Product) o[0];		assertTrue(Hibernate.isInitialized( p.getOrders() ));		assertNotNull(p.getOrders().iterator().next());		t.commit();		s.close();	}	public void testAutoDetectAliasing() {		Session s = openSession();		Transaction t = s.beginTransaction();		Organization ifa = new Organization("IFA");		Organization jboss = new Organization("JBoss");		Person gavin = new Person("Gavin");		Employment emp = new Employment(gavin, jboss, "AU");		Serializable orgId = s.save(jboss);		Serializable orgId2 = s.save(ifa);		s.save(gavin);		s.save(emp);		t.commit();		s.close();		s = openSession();		t = s.beginTransaction();		List list = s.createSQLQuery( getEmploymentSQL() )				.addEntity( Employment.class.getName() )				.list();		assertEquals( 1,list.size() );		Employment emp2 = (Employment) list.get(0);		assertEquals(emp2.getEmploymentId(), emp.getEmploymentId() );		assertEquals(emp2.getStartDate().getDate(), emp.getStartDate().getDate() );		assertEquals(emp2.getEndDate(), emp.getEndDate() );		s.clear();		list = s.createSQLQuery( getEmploymentSQL() )		.addEntity( Employment.class.getName() )		.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)		.list();		assertEquals( 1,list.size() );		Map m = (Map) list.get(0);		assertTrue(m.containsKey("Employment"));		assertEquals(1,m.size());		list = s.createSQLQuery(getEmploymentSQL()).list();		assertEquals(1, list.size());		Object[] o = (Object[]) list.get(0);		assertEquals(8, o.length);		list = s.createSQLQuery( getEmploymentSQL() ).setResultTransformer( new UpperCasedAliasToEntityMapResultTransformer() ).list();		assertEquals(1, list.size());		m = (Map) list.get(0);		assertTrue(m.containsKey("EMPID"));		assertTrue(m.containsKey("VALUE"));		assertTrue(m.containsKey("ENDDATE"));		assertEquals(8, m.size());		list = s.createSQLQuery( getEmploymentSQLMixedScalarEntity() ).addScalar( "employerid" ).addEntity( Employment.class ).list();		assertEquals(1, list.size());		o = (Object[]) list.get(0);		assertEquals(2, o.length);		assertClassAssignability( o[0].getClass(), Number.class);		assertClassAssignability( o[1].getClass(), Employment.class);		Query queryWithCollection = s.getNamedQuery("organizationEmploymentsExplicitAliases");		queryWithCollection.setLong("id",  jboss.getId() );		list = queryWithCollection.list();		assertEquals(list.size(),1);		s.clear();		list = s.createSQLQuery( getOrganizationJoinEmploymentSQL() )				.addEntity( "org", Organization.class )				.addJoin( "emp", "org.employments" )				.list();		assertEquals( 2,list.size() );		s.clear();		list = s.createSQLQuery( getOrganizationFetchJoinEmploymentSQL() )				.addEntity( "org", Organization.class )				.addJoin( "emp", "org.employments" )				.list();		assertEquals( 2,list.size() );		s.clear();		// TODO : why twice?		s.getNamedQuery( "organizationreturnproperty" ).list();		list = s.getNamedQuery( "organizationreturnproperty" ).list();		assertEquals( 2,list.size() );		s.clear();		list = s.getNamedQuery( "organizationautodetect" ).list();		assertEquals( 2,list.size() );		t.commit();		s.close();		s = openSession();		t = s.beginTransaction();		s.delete(emp2);		s.delete(jboss);		s.delete(gavin);		s.delete(ifa);		t.commit();		s.close();		s = openSession();		t = s.beginTransaction();		Dimension dim = new Dimension( 3, Integer.MAX_VALUE );		s.save( dim );		list = s.createSQLQuery( "select d_len * d_width as surface, d_len * d_width * 10 as volume from Dimension" ).list();		s.delete( dim );		t.commit();		s.close();		s = openSession();		t = s.beginTransaction();		SpaceShip enterprise = new SpaceShip();		enterprise.setModel( "USS" );		enterprise.setName( "Entreprise" );		enterprise.setSpeed( 50d );		Dimension d = new Dimension(45, 10);		enterprise.setDimensions( d );		s.save( enterprise );		Object[] result = (Object[]) s.getNamedQuery( "spaceship" ).uniqueResult();		enterprise = ( SpaceShip ) result[0];		assertTrue(50d == enterprise.getSpeed() );		assertTrue( 450d == extractDoubleValue( result[1] ) );		assertTrue( 4500d == extractDoubleValue( result[2] ) );		s.delete( enterprise );		t.commit();		s.close();	}	public void testMixAndMatchEntityScalar() {		Session s = openSession();		Transaction t = s.beginTransaction();		Speech speech = new Speech();		speech.setLength( new Double( 23d ) );		speech.setName( "Mine" );		s.persist( speech );		s.flush();		s.clear();		List l = s.createSQLQuery( "select name, id, flength, name as scalarName from Speech" )				.setResultSetMapping( "speech" )				.list();		assertEquals( l.size(), 1 );		t.rollback();		s.close();	}	private double extractDoubleValue(Object value) {		if ( value instanceof BigInteger ) {			return ( ( BigInteger ) value ).doubleValue();		}		else if ( value instanceof BigDecimal ) {			return ( ( BigDecimal ) value ).doubleValue();		}		else {			return Double.valueOf( value.toString() ).doubleValue();		}	}	private static class UpperCasedAliasToEntityMapResultTransformer extends AliasToEntityMapResultTransformer {		public Object transformTuple(Object[] tuple, String[] aliases) {			String[] ucAliases = new String[aliases.length];			for ( int i = 0; i < aliases.length; i++ ) {				ucAliases[i] = aliases[i].toUpperCase();			}			return super.transformTuple( tuple, ucAliases );		}	}}

⌨️ 快捷键说明

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