📄 fumtest.java
字号:
//$Id: FumTest.java,v 1.1.2.10 2004/02/04 20:36:34 oneovthafew Exp $package org.hibernate.test;import java.io.Serializable;import java.util.ArrayList;import java.util.Date;import java.util.GregorianCalendar;import java.util.HashSet;import java.util.Iterator;import java.util.LinkedList;import java.util.List;import java.util.Map;import java.util.Properties;import java.util.Set;import junit.framework.Test;import junit.framework.TestSuite;import junit.textui.TestRunner;import net.sf.hibernate.Criteria;import net.sf.hibernate.FetchMode;import net.sf.hibernate.Hibernate;import net.sf.hibernate.LockMode;import net.sf.hibernate.Query;import net.sf.hibernate.Session;import net.sf.hibernate.dialect.HSQLDialect;import net.sf.hibernate.dialect.MckoiDialect;import net.sf.hibernate.dialect.MySQLDialect;import net.sf.hibernate.dialect.PointbaseDialect;import net.sf.hibernate.dialect.SQLServerDialect;import net.sf.hibernate.expression.Expression;import net.sf.hibernate.expression.MatchMode;import net.sf.hibernate.type.DateType;import net.sf.hibernate.type.EntityType;import net.sf.hibernate.type.StringType;import net.sf.hibernate.type.Type;public class FumTest extends TestCase { private static short fumKeyShort = 1; public FumTest(String arg) { super(arg); } public void testCriteriaCollection() throws Exception { if ( getDialect() instanceof HSQLDialect ) return; if ( getDialect() instanceof SQLServerDialect ) return; Session s = openSession(); Fum fum = new Fum( fumKey("fum") ); fum.setFum("a value"); fum.getMapComponent().getFummap().put("self", fum); fum.getMapComponent().getStringmap().put("string", "a staring"); fum.getMapComponent().getStringmap().put("string2", "a notha staring"); fum.getMapComponent().setCount(1); s.save(fum); s.flush(); s.connection().commit(); s.close(); s = openSession(); Fum b = (Fum) s.createCriteria(Fum.class).add( Expression.in("fum", new String[] { "a value", "no value" } ) ) .uniqueResult(); //assertTrue( Hibernate.isInitialized( b.getMapComponent().getFummap() ) ); assertTrue( Hibernate.isInitialized( b.getMapComponent().getStringmap() ) ); assertTrue( b.getMapComponent().getFummap().size()==1 ); assertTrue( b.getMapComponent().getStringmap().size()==2 ); /*int none = s.createCriteria(Fum.class).add( Expression.in( "fum", new String[0] ) ).list().size(); assertTrue(none==0);*/ s.delete(b); s.flush(); s.connection().commit(); s.close(); } public void testCriteria() throws Exception { if ( getDialect() instanceof SQLServerDialect ) return; Session s = openSession(); Fum fum = new Fum( fumKey("fum") ); fum.setFo( new Fum( fumKey("fo") ) ); fum.setFum("fo fee fi"); fum.getFo().setFum("stuff"); Fum fr = new Fum( fumKey("fr") ); fr.setFum("goo"); Fum fr2 = new Fum( fumKey("fr2") ); fr2.setFum("soo"); fum.setFriends( new HashSet() ); fum.getFriends().add(fr); fum.getFriends().add(fr2); s.save(fr); s.save(fr2); s.save( fum.getFo() ); s.save(fum); Criteria base = s.createCriteria(Fum.class) .add( Expression.like("fum", "f", MatchMode.START) ); base.createCriteria("fo") .add( Expression.isNotNull("fum") ); base.createCriteria("friends") .add( Expression.like("fum", "g%") ); List list = base.list(); assertTrue( list.size()==1 && list.get(0)==fum ); base = s.createCriteria(Fum.class) .add( Expression.like("fum", "f%") ) .setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP); base.createCriteria("fo", "fo") .add( Expression.isNotNull("fum") ); base.createCriteria("friends", "fum") .add( Expression.like("fum", "g", MatchMode.START) ); Map map = (Map) base.uniqueResult(); assertTrue( map.get("this")==fum && map.get("fo")==fum.getFo() && fum.getFriends().contains( map.get("fum") ) && map.size()==3 ); base = s.createCriteria(Fum.class) .add( Expression.like("fum", "f%") ) .setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP) .setFetchMode("friends", FetchMode.EAGER); base.createCriteria("fo", "fo") .add( Expression.eq( "fum", fum.getFo().getFum() ) ); map = (Map) base.list().get(0); assertTrue( map.get("this")==fum && map.get("fo")==fum.getFo() && map.size()==2 ); list = s.createCriteria(Fum.class) .createAlias("friends", "fr") .createAlias("fo", "fo") .add( Expression.like("fum", "f%") ) .add( Expression.isNotNull("fo") ) .add( Expression.isNotNull("fo.fum") ) .add( Expression.like("fr.fum", "g%") ) .add( Expression.eqProperty("fr.id.short", "id.short") ) .list(); assertTrue( list.size()==1 && list.get(0)==fum ); s.flush(); s.connection().commit(); s.close(); s = openSession(); base = s.createCriteria(Fum.class) .add( Expression.like("fum", "f%") ); base.createCriteria("fo") .add( Expression.isNotNull("fum") ); base.createCriteria("friends") .add( Expression.like("fum", "g%") ); fum = (Fum) base.list().get(0); assertTrue( fum.getFriends().size()==2 ); s.delete(fum); s.delete( fum.getFo() ); Iterator iter = fum.getFriends().iterator(); while ( iter.hasNext() ) s.delete( iter.next() ); s.flush(); s.connection().commit(); s.close(); } public void testListIdentifiers() throws Exception { if ( getDialect() instanceof SQLServerDialect ) return; Session s = openSession(); Fum fum = new Fum( fumKey("fum") ); fum.setFum("fo fee fi"); s.save(fum); fum = new Fum( fumKey("fi") ); fum.setFum("fee fi fo"); s.save(fum); List list = s.find("select fum.id from fum in class Fum where not fum.fum='FRIEND'"); assertTrue( "list identifiers", list.size()==2); Iterator iter = s.iterate("select fum.id from fum in class Fum where not fum.fum='FRIEND'"); int i=0; while ( iter.hasNext() ) { assertTrue( "iterate identifiers", iter.next() instanceof FumCompositeID); i++; } assertTrue(i==2); s.delete( s.load(Fum.class, (Serializable) list.get(0) ) ); s.delete( s.load(Fum.class, (Serializable) list.get(1) ) ); s.flush(); s.connection().commit(); s.close(); } public FumCompositeID fumKey(String str) { return fumKey(str,false); } private FumCompositeID fumKey(String str, boolean aCompositeQueryTest) { FumCompositeID id = new FumCompositeID(); if ( getDialect() instanceof MckoiDialect ) { GregorianCalendar now = new GregorianCalendar(); GregorianCalendar cal = new GregorianCalendar( now.get(java.util.Calendar.YEAR), now.get(java.util.Calendar.MONTH), now.get(java.util.Calendar.DATE) ); id.setDate( cal.getTime() ); } else { id.setDate( new Date() ); } id.setString( new String(str) ); if (aCompositeQueryTest) { id.setShort( fumKeyShort++ ); } else { id.setShort( (short) 12 ); } return id; } public void testCompositeID() throws Exception { if ( getDialect() instanceof SQLServerDialect ) return; if ( getDialect() instanceof HSQLDialect ) return; Session s = openSession(); Fum fum = new Fum( fumKey("fum") ); fum.setFum("fee fi fo"); s.save(fum); assertTrue( "load by composite key", fum==s.load( Fum.class, fumKey("fum") ) ); s.flush(); s.connection().commit(); s.close(); s = openSession(); fum = (Fum) s.load( Fum.class, fumKey("fum"), LockMode.UPGRADE ); assertTrue( "load by composite key", fum!=null ); Fum fum2 = new Fum( fumKey("fi") ); fum2.setFum("fee fo fi"); fum.setFo(fum2); s.save(fum2); assertTrue( "find composite keyed objects", s.find("from fum in class Fum where not fum.fum='FRIEND'").size()==2 ); assertTrue( "find composite keyed object", s.find("select fum from fum in class Fum where fum.fum='fee fi fo'").get(0)==fum ); fum.setFo(null); s.flush(); s.connection().commit(); s.close(); s = openSession(); Iterator iter = s.iterate("from fum in class Fum where not fum.fum='FRIEND'"); int i = 0; while ( iter.hasNext() ) { fum = (Fum) iter.next(); //iter.remove(); s.delete(fum); i++; } assertTrue( "iterate on composite key", i==2 ); s.flush(); s.connection().commit(); s.close(); } public void testCompositeIDOneToOne() throws Exception { if ( getDialect() instanceof SQLServerDialect ) return; if ( getDialect() instanceof HSQLDialect ) return; Session s = openSession(); Fum fum = new Fum( fumKey("fum") ); fum.setFum("fee fi fo"); //s.save(fum); Fumm fumm = new Fumm(); fumm.setFum(fum); s.save(fumm); s.flush(); s.connection().commit(); s.close(); s = openSession(); fumm = (Fumm) s.load( Fumm.class, fumKey("fum") ); //s.delete( fumm.getFum() ); s.delete(fumm); s.flush(); s.connection().commit(); s.close(); } public void testCompositeIDQuery() throws Exception { if ( getDialect() instanceof SQLServerDialect ) return; if ( getDialect() instanceof HSQLDialect ) return; Session s = openSession(); Fum fee = new Fum( fumKey("fee",true) ); fee.setFum("fee"); s.save(fee); Fum fi = new Fum( fumKey("fi",true) ); fi.setFum("fi"); short fiShort = fi.getId().getShort(); s.save(fi); Fum fo = new Fum( fumKey("fo",true) ); fo.setFum("fo"); s.save(fo); Fum fum = new Fum( fumKey("fum",true) ); fum.setFum("fum"); s.save(fum); s.flush(); s.connection().commit(); s.close(); s = openSession(); // Try to find the Fum object "fo" that we inserted searching by the string in the id List vList = s.find("from fum in class Fum where fum.id.string='fo'" ); assertTrue( "find by composite key query (find fo object)", vList.size() == 1 ); fum = (Fum)vList.get(0); assertTrue( "find by composite key query (check fo object)", fum.getId().getString().equals("fo") ); // Try to find the Fum object "fi" that we inserted searching by the date in the id
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -