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

📄 masterdetailtest.java

📁 人力资源管理系统主要包括:人员管理、招聘管理、培训管理、奖惩管理和薪金管理五大管理模块。
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
		s = openSession();		t = s.beginTransaction();		Detail dd = (Detail) s.load(Detail.class, did);		master = dd.getMaster();		assertTrue( "detail-master", master.getDetails().contains(dd) );		assertTrue( s.filter( master.getDetails(), "order by this.i desc").size()==2 );		assertTrue( s.filter( master.getDetails(), "select this where this.id > -1").size()==2 );		Query q = s.createFilter( master.getDetails(), "where this.id > :id" );		q.setInteger("id", -1);		assertTrue( q.list().size()==2 );		q = s.createFilter( master.getDetails(), "where this.id > :id1 and this.id < :id2" );		q.setInteger("id1", -1);		q.setInteger("id2", 99999999);		assertTrue( q.list().size()==2 );		q.setInteger("id2", -1);		assertTrue( q.list().size()==0 );		q = s.createFilter( master.getDetails(), "where this.id in (:ids)" );		list = new ArrayList();		list.add(did);		list.add( new Long(-1) );		q.setParameterList("ids", list);		assertTrue( q.list().size()==1 );		assertTrue( q.iterate().hasNext() );		assertTrue( s.filter( master.getDetails(), "where this.id > -1").size()==2 );		assertTrue( s.filter( master.getDetails(), "select this.master where this.id > -1").size()==2 );		assertTrue( s.filter( master.getDetails(), "select m from m in class Master where this.id > -1 and this.master=m").size()==2 );		assertTrue( s.filter( master.getIncoming(), "where this.id > -1 and this.name is not null").size()==0 );				assertTrue( s.createFilter( master.getDetails(), "select max(this.i)" ).iterate().next() instanceof Integer );		assertTrue( s.createFilter( master.getDetails(), "select max(this.i) group by this.id" ).iterate().next() instanceof Integer );		assertTrue( s.createFilter( master.getDetails(), "select count(*)" ).iterate().next() instanceof Integer );				assertTrue( s.createFilter( master.getDetails(), "select this.master" ).list().size()==2 );		assertTrue( s.filter( master.getMoreDetails(), "" ).size()==0 );		assertTrue( s.filter( master.getIncoming(), "" ).size()==0 );				Query f = s.createFilter( master.getDetails(), "select max(this.i) where this.i < :top and this.i>=:bottom" );		f.setInteger("top", 100);		f.setInteger("bottom", 0);		assertEquals( f.iterate().next(), new Integer(12) );		f.setInteger("top", 2);		assertEquals( f.iterate().next(), new Integer(0) );				f = s.createFilter( master.getDetails(), "select max(this.i) where this.i not in (:list)" );		Collection coll = new ArrayList();		coll.add( new Integer(-666) );		coll.add( new Integer(22) );		coll.add( new Integer(0) );		f.setParameterList("list", coll);		assertEquals( f.iterate().next(), new Integer(12) );		f = s.createFilter( master.getDetails(), "select max(this.i) where this.i not in (:list) and this.master.name = :listy2" );		f.setParameterList("list", coll);		f.setParameter( "listy2", master.getName() );		assertEquals( f.iterate().next(), new Integer(12) );				iter = master.getDetails().iterator();		i=0;		while ( iter.hasNext() ) {			Detail d = (Detail) iter.next();			assertTrue( "master-detail", d.getMaster()==master );			s.delete(d);			i++;		}		assertTrue( "master-detail", i==2 );		s.delete(master);		t.commit();		s.close();	}		public void testIncomingOutgoing() throws Exception {				if (getDialect() instanceof HSQLDialect) return;				Session s = openSession();		Master master1 = new Master();		Master master2 = new Master();		Master master3 = new Master();		s.save(master1);		s.save(master2);		s.save(master3);		master1.addIncoming(master2);		master2.addOutgoing(master1);		master1.addIncoming(master3);		master3.addOutgoing(master1);		Serializable m1id = s.getIdentifier(master1);		assertTrue( s.filter( master1.getIncoming(), "where this.id > 0 and this.name is not null").size()==2 );		s.flush();		s.connection().commit();		s.close();				s = openSession();		master1 = (Master) s.load(Master.class, m1id);		Iterator iter = master1.getIncoming().iterator();		int i=0;		while ( iter.hasNext() ) {			Master m = (Master) iter.next();			assertTrue( "outgoing", m.getOutgoing().size()==1 );			assertTrue( "outgoing", m.getOutgoing().contains(master1) );			s.delete(m);			i++;		}		assertTrue( "incoming-outgoing", i==2 );		s.delete(master1);		s.flush();		s.connection().commit();		s.close();	}		public void testCascading() throws Exception {				if (getDialect() instanceof HSQLDialect) return;				Session s = openSession();		Detail d1 = new Detail();		Detail d2 = new Detail();		d2.setI(22);		Master m = new Master();		Master m0 = new Master();		Serializable m0id = s.save(m0);		m0.addDetail(d1); m0.addDetail(d2);		d1.setMaster(m0); d2.setMaster(m0);		m.getMoreDetails().add(d1);		m.getMoreDetails().add(d2);		Serializable mid = s.save(m);		s.flush();		s.connection().commit();		s.close();		s = openSession();		m = (Master) s.load(Master.class, mid);		assertTrue( "cascade save", m.getMoreDetails().size()==2 );		assertTrue( "cascade save", ( (Detail) m.getMoreDetails().iterator().next() ).getMaster().getDetails().size()==2 );				s.delete(m);		s.delete( s.load(Master.class, m0id) );				s.flush();		s.connection().commit();		s.close();	}		/*public void testCascading2() throws Exception {		Session s = sessionsopenSession();		Detail d1 = new Detail();		Detail d2 = new Detail();		Master m = new Master();		m.getMoreDetails().add(d1);		m.getMoreDetails().add(d2);		Serializable mid = s.save(m);		s.flush();		s.connection().commit();		s.close();		s = sessionsopenSession();		m = (Master) s.load(Master.class, mid);		assertTrue( m.getMoreDetails().size()==2, "cascade save" );		s.delete(m);		s.flush();		s.connection().commit();		s.close();	}*/		public void testNamedQuery() throws Exception {		Session s = openSession();		Query q = s.getNamedQuery("all_details");		q.list();		s.connection().commit();		s.close();	}			public void testSerialization() throws Exception {				if (getDialect() instanceof HSQLDialect) return;				Session s = openSession();		Master m = new Master();		Detail d1 = new Detail();		Detail d2 = new Detail();		Serializable mid = s.save(m);		d1.setMaster(m);		d2.setMaster(m);		m.addDetail(d1);		m.addDetail(d2);		if (getDialect() instanceof SybaseDialect) {			s.save(d1);		}		else {			s.save( d1, new Long(666) );		}		//s.save(d2);		s.flush();		s.connection().commit();		s.disconnect();		ByteArrayOutputStream os = new ByteArrayOutputStream();		new ObjectOutputStream(os).writeObject(s);		byte[] bytes = os.toByteArray();		System.out.println(bytes.length);		s = (Session) new ObjectInputStream( new ByteArrayInputStream(bytes) ).readObject();		s.reconnect();		Master m2 = (Master) s.load(Master.class, mid);		assertTrue( "serialized state", m2.getDetails().size()==2 );		Iterator iter = m2.getDetails().iterator();		while ( iter.hasNext() ) {			Detail d = (Detail) iter.next();			assertTrue( "deserialization", d.getMaster()==m2 );			try {				s.getIdentifier(d);				s.delete(d);			}			catch (Exception e) {}		}		s.delete(m2);		s.flush();		s.connection().commit();		s.close();				s = openSession();		mid = s.save( new Master() );		Serializable mid2 = s.save( new Master() );		s.flush();		s.connection().commit();		s.disconnect();		os = new ByteArrayOutputStream();		new ObjectOutputStream(os).writeObject(s);		bytes = os.toByteArray();		System.out.println(bytes.length);		s = (Session) new ObjectInputStream( new ByteArrayInputStream(bytes) ).readObject();		s.reconnect();		s.delete( s.load(Master.class, mid) );		s.delete( s.load(Master.class, mid2) );		s.flush();		s.connection().commit();		s.close();				s = openSession();		s.connection(); //force session to grab a connection		try {			os = new ByteArrayOutputStream();			new ObjectOutputStream(os).writeObject(s);		}		catch (Exception e) {			assertTrue("illegal state", e instanceof IllegalStateException );			s.connection().commit();			s.close();			return;		}		assertTrue("serialization should have failed", false);			}		public void testUpdateLazyCollections() throws Exception {				if (getDialect() instanceof HSQLDialect) return;				Session s = openSession();		Master m = new Master();		Detail d1 = new Detail();		Detail d2 = new Detail();		d2.setX(14);		Serializable mid = s.save(m);		//s.flush();		d1.setMaster(m);		d2.setMaster(m);		m.addDetail(d1);		m.addDetail(d2);		if (getDialect() instanceof SybaseDialect) {			s.save(d1);	s.save(d2);		}		else {			s.save( d1, new Long(666) );			s.save( d2, new Long(667) );		}		s.flush();		s.connection().commit();		s.close();		s = openSession();		m = (Master) s.load(Master.class, mid);		s.connection().commit();		s.close();		m.setName("New Name");		s = openSession();		s.update(m, mid);		Iterator iter = m.getDetails().iterator();		int i=0;		while ( iter.hasNext() ) {			assertTrue( iter.next()!=null );			i++;		}		assertTrue(i==2);		iter = m.getDetails().iterator();		while ( iter.hasNext() ) s.delete( iter.next() );		s.delete(m);		s.flush();		s.connection().commit();		s.close();			}		public void testMultiLevelCascade() throws Exception {				if (getDialect() instanceof HSQLDialect) return;				Session s = openSession();		Detail detail = new Detail();		SubDetail subdetail = new SubDetail();		Master m = new Master();		Master m0 = new Master();		Serializable m0id = s.save(m0);		m0.addDetail(detail);		detail.setMaster(m0);		m.getMoreDetails().add(detail);		detail.setSubDetails( new HashSet() );		detail.getSubDetails().add(subdetail);		Serializable mid = s.save(m);		s.flush();		s.connection().commit();		s.close();		s = openSession();		m = (Master) s.load( Master.class, mid );		assertTrue( ( (Detail) m.getMoreDetails().iterator().next() ).getSubDetails().size()!=0 );		s.delete(m);		assertTrue( s.find("from sd in class SubDetail").size()==0 );		assertTrue( s.find("from d in class Detail").size()==0 );		s.delete( s.load(Master.class, m0id) );		s.flush();		s.connection().commit();		s.close();	}		public void testMixNativeAssigned() throws Exception {				if (getDialect() instanceof HSQLDialect) return;				Session s = openSession();		Category c = new Category(); 		c.setName("NAME");		Assignable assn = new Assignable();		assn.setId("i.d.");		List l = new ArrayList();		l.add(c);		assn.setCategories(l);		c.setAssignable(assn);		s.save(assn);		s.flush();		s.connection().commit();		s.close();		s = openSession();		s.delete(assn);		s.flush();		s.connection().commit();		s.close();	}		public void testCollectionReplaceOnUpdate() throws Exception {		Session s = openSession();		Transaction t = s.beginTransaction();		Category c = new Category();		List list = new ArrayList();		c.setSubcategories(list);		list.add( new Category() );		s.save(c);		t.commit();		s.close();		c.setSubcategories(list);				s = openSession();		t = s.beginTransaction();		s.update(c);		t.commit();		s.close();		s = openSession();		t = s.beginTransaction();		c = (Category) s.load( Category.class, new Long( c.getId() ), LockMode.UPGRADE );		List list2 = c.getSubcategories();		t.commit();		s.close();		

⌨️ 快捷键说明

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