📄 indexedcollectiontest.java
字号:
//$Id: IndexedCollectionTest.java 11282 2007-03-14 22:05:59Z epbernard $package org.hibernate.test.annotations.indexcoll;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.hibernate.Session;import org.hibernate.Transaction;import org.hibernate.Hibernate;import org.hibernate.test.annotations.TestCase;/** * Test index collections * * @author Emmanuel Bernard */public class IndexedCollectionTest extends TestCase { public void testFkList() throws Exception { Wardrobe w = new Wardrobe(); Drawer d1 = new Drawer(); Drawer d2 = new Drawer(); w.setDrawers( new ArrayList<Drawer>() ); w.getDrawers().add( d1 ); w.getDrawers().add( d2 ); Session s; Transaction tx; s = openSession(); tx = s.beginTransaction(); s.persist( w ); s.flush(); s.clear(); w = (Wardrobe) s.get( Wardrobe.class, w.getId() ); assertNotNull( w ); assertNotNull( w.getDrawers() ); List<Drawer> result = w.getDrawers(); assertEquals( 2, result.size() ); assertEquals( d2.getId(), result.get( 1 ).getId() ); result.remove( d1 ); s.flush(); d1 = (Drawer) s.merge( d1 ); result.add( d1 ); s.flush(); s.clear(); w = (Wardrobe) s.get( Wardrobe.class, w.getId() ); assertNotNull( w ); assertNotNull( w.getDrawers() ); result = w.getDrawers(); assertEquals( 2, result.size() ); assertEquals( d1.getId(), result.get( 1 ).getId() ); s.delete( result.get( 0 ) ); s.delete( result.get( 1 ) ); s.delete( w ); s.flush(); tx.rollback(); s.close(); } public void testJoinedTableList() throws Exception { Wardrobe w = new Wardrobe(); w.setDrawers( new ArrayList<Drawer>() ); Drawer d = new Drawer(); w.getDrawers().add( d ); Dress d1 = new Dress(); Dress d2 = new Dress(); d.setDresses( new ArrayList<Dress>() ); d.getDresses().add( d1 ); d.getDresses().add( d2 ); Session s; Transaction tx; s = openSession(); tx = s.beginTransaction(); s.persist( d1 ); s.persist( d2 ); s.persist( w ); s.flush(); s.clear(); d = (Drawer) s.get( Drawer.class, d.getId() ); assertNotNull( d ); assertNotNull( d.getDresses() ); List<Dress> result = d.getDresses(); assertEquals( 2, result.size() ); assertEquals( d2.getId(), result.get( 1 ).getId() ); result.remove( d1 ); s.flush(); d1 = (Dress) s.merge( d1 ); result.add( d1 ); s.flush(); s.clear(); d = (Drawer) s.get( Drawer.class, d.getId() ); assertNotNull( d ); assertNotNull( d.getDresses() ); result = d.getDresses(); assertEquals( 2, result.size() ); assertEquals( d1.getId(), result.get( 1 ).getId() ); s.delete( result.get( 0 ) ); s.delete( result.get( 1 ) ); s.delete( d ); s.flush(); tx.rollback(); s.close(); } public void testMapKey() throws Exception { Session s; Transaction tx; s = openSession(); tx = s.beginTransaction(); Software hibernate = new Software(); hibernate.setName( "Hibernate" ); Version v1 = new Version(); v1.setCodeName( "HumbaHumba" ); v1.setNumber( "1.0" ); v1.setSoftware( hibernate ); Version v2 = new Version(); v2.setCodeName( "Copacabana" ); v2.setNumber( "2.0" ); v2.setSoftware( hibernate ); Version v4 = new Version(); v4.setCodeName( "Dreamland" ); v4.setNumber( "4.0" ); v4.setSoftware( hibernate ); Map<String, Version> link = new HashMap<String, Version>(); link.put( v1.getCodeName(), v1 ); link.put( v2.getCodeName(), v2 ); link.put( v4.getCodeName(), v4 ); hibernate.setVersions( link ); s.persist( hibernate ); s.persist( v1 ); s.persist( v2 ); s.persist( v4 ); s.flush(); s.clear(); hibernate = (Software) s.get( Software.class, "Hibernate" ); assertEquals( 3, hibernate.getVersions().size() ); assertEquals( "1.0", hibernate.getVersions().get( "HumbaHumba" ).getNumber() ); assertEquals( "2.0", hibernate.getVersions().get( "Copacabana" ).getNumber() ); hibernate.getVersions().remove( v4.getCodeName() ); s.flush(); s.clear(); hibernate = (Software) s.get( Software.class, "Hibernate" ); assertEquals( "So effect on collection changes", 3, hibernate.getVersions().size() ); for ( Version v : hibernate.getVersions().values() ) { s.delete( v ); } s.delete( hibernate ); s.flush(); tx.rollback(); s.close(); } public void testDefaultMapKey() throws Exception { Session s; Transaction tx; s = openSession(); tx = s.beginTransaction(); AddressBook book = new AddressBook(); book.setOwner( "Emmanuel" ); AddressEntryPk helene = new AddressEntryPk( "Helene", "Michau" ); AddressEntry heleneEntry = new AddressEntry(); heleneEntry.setBook( book ); heleneEntry.setCity( "Levallois" ); heleneEntry.setStreet( "Louis Blanc" ); heleneEntry.setPerson( helene ); AddressEntryPk primeMinister = new AddressEntryPk( "Dominique", "Villepin" ); AddressEntry primeMinisterEntry = new AddressEntry(); primeMinisterEntry.setBook( book ); primeMinisterEntry.setCity( "Paris" ); primeMinisterEntry.setStreet( "Hotel Matignon" ); primeMinisterEntry.setPerson( primeMinister ); book.getEntries().put( helene, heleneEntry ); book.getEntries().put( primeMinister, primeMinisterEntry ); s.persist( book ); s.flush(); s.clear(); book = (AddressBook) s.get( AddressBook.class, book.getId() ); assertEquals( 2, book.getEntries().size() ); assertEquals( heleneEntry.getCity(), book.getEntries().get( helene ).getCity() ); AddressEntryPk fake = new AddressEntryPk( "Fake", "Fake" ); book.getEntries().put( fake, primeMinisterEntry ); s.flush(); s.clear(); book = (AddressBook) s.get( AddressBook.class, book.getId() ); assertEquals( 2, book.getEntries().size() ); assertNull( book.getEntries().get( fake ) ); s.delete( book ); s.flush(); tx.rollback(); s.close(); } public void testMapKeyToEntity() throws Exception { Session s; Transaction tx; s = openSession(); tx = s.beginTransaction(); AlphabeticalDirectory m = new AlphabeticalDirectory(); m.setName( "M" ); AlphabeticalDirectory v = new AlphabeticalDirectory(); v.setName( "V" ); s.persist( m ); s.persist( v ); AddressBook book = new AddressBook(); book.setOwner( "Emmanuel" ); AddressEntryPk helene = new AddressEntryPk( "Helene", "Michau" ); AddressEntry heleneEntry = new AddressEntry(); heleneEntry.setBook( book ); heleneEntry.setCity( "Levallois" ); heleneEntry.setStreet( "Louis Blanc" ); heleneEntry.setPerson( helene ); heleneEntry.setDirectory( m ); AddressEntryPk primeMinister = new AddressEntryPk( "Dominique", "Villepin" ); AddressEntry primeMinisterEntry = new AddressEntry(); primeMinisterEntry.setBook( book ); primeMinisterEntry.setCity( "Paris" ); primeMinisterEntry.setStreet( "Hotel Matignon" ); primeMinisterEntry.setPerson( primeMinister ); primeMinisterEntry.setDirectory( v ); book.getEntries().put( helene, heleneEntry ); book.getEntries().put( primeMinister, primeMinisterEntry ); s.persist( book ); s.flush(); s.clear(); book = (AddressBook) s.get( AddressBook.class, book.getId() ); assertEquals( 2, book.getEntries().size() ); assertEquals( heleneEntry.getCity(), book.getEntries().get( helene ).getCity() ); assertEquals( "M", book.getEntries().get( helene ).getDirectory().getName() ); s.delete( book ); tx.rollback(); s.close(); } public void testComponentSubPropertyMapKey() throws Exception { Session s; Transaction tx; s = openSession(); tx = s.beginTransaction(); AddressBook book = new AddressBook(); book.setOwner( "Emmanuel" ); AddressEntryPk helene = new AddressEntryPk( "Helene", "Michau" ); AddressEntry heleneEntry = new AddressEntry(); heleneEntry.setBook( book ); heleneEntry.setCity( "Levallois" ); heleneEntry.setStreet( "Louis Blanc" ); heleneEntry.setPerson( helene ); AddressEntryPk primeMinister = new AddressEntryPk( "Dominique", "Villepin" ); AddressEntry primeMinisterEntry = new AddressEntry(); primeMinisterEntry.setBook( book ); primeMinisterEntry.setCity( "Paris" ); primeMinisterEntry.setStreet( "Hotel Matignon" );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -