1 package org.hibernate.test.bidi; 3 4 import java.math.BigDecimal ; 5 import java.util.Date ; 6 7 import junit.framework.Test; 8 import junit.framework.TestSuite; 9 10 import org.hibernate.Hibernate; 11 import org.hibernate.Session; 12 import org.hibernate.Transaction; 13 import org.hibernate.dialect.PostgreSQLDialect; 14 import org.hibernate.test.TestCase; 15 16 19 public class AuctionTest extends TestCase { 20 21 public AuctionTest(String str) { 22 super(str); 23 } 24 25 public void testLazy() { 26 if ( getDialect() instanceof PostgreSQLDialect ) return; 28 Session s = openSession(); 29 Transaction t = s.beginTransaction(); 30 Auction a = new Auction(); 31 a.setDescription("an auction for something"); 32 a.setEnd( new Date () ); 33 Bid b = new Bid(); 34 b.setAmount( new BigDecimal (123.34) ); 35 b.setSuccessful(true); 36 b.setDatetime( new Date () ); 37 b.setItem(a); 38 a.getBids().add(b); 39 a.setSuccessfulBid(b); 40 s.persist(b); 41 t.commit(); 42 s.close(); 43 44 Long aid = a.getId(); 45 Long bid = b.getId(); 46 47 s = openSession(); 48 t = s.beginTransaction(); 49 b = (Bid) s.load( Bid.class, bid ); 50 assertFalse( Hibernate.isInitialized(b) ); 51 a = (Auction) s.get( Auction.class, aid ); 52 assertFalse( Hibernate.isInitialized( a.getBids() ) ); 53 assertTrue( Hibernate.isInitialized( a.getSuccessfulBid() ) ); 54 assertSame( a.getBids().iterator().next(), b ); 55 assertSame( b, a.getSuccessfulBid() ); 56 assertTrue( Hibernate.isInitialized(b) ); 57 assertTrue( b.isSuccessful() ); 58 t.commit(); 59 s.close(); 60 61 s = openSession(); 62 t = s.beginTransaction(); 63 b = (Bid) s.load( Bid.class, bid ); 64 assertFalse( Hibernate.isInitialized(b) ); 65 a = (Auction) s.createQuery("from Auction a left join fetch a.bids").uniqueResult(); 66 assertTrue( Hibernate.isInitialized(b) ); 67 assertTrue( Hibernate.isInitialized( a.getBids() ) ); 68 assertSame( b, a.getSuccessfulBid() ); 69 assertSame( a.getBids().iterator().next(), b ); 70 assertTrue( b.isSuccessful() ); 71 t.commit(); 72 s.close(); 73 74 s = openSession(); 75 t = s.beginTransaction(); 76 b = (Bid) s.load( Bid.class, bid ); 77 a = (Auction) s.load( Auction.class, aid ); 78 assertFalse( Hibernate.isInitialized(b) ); 79 assertFalse( Hibernate.isInitialized(a) ); 80 s.createQuery("from Auction a left join fetch a.successfulBid").list(); 81 assertTrue( Hibernate.isInitialized(b) ); 82 assertTrue( Hibernate.isInitialized(a) ); 83 assertSame( b, a.getSuccessfulBid() ); 84 assertFalse( Hibernate.isInitialized( a.getBids() ) ); 85 assertSame( a.getBids().iterator().next(), b ); 86 assertTrue( b.isSuccessful() ); 87 t.commit(); 88 s.close(); 89 90 s = openSession(); 91 t = s.beginTransaction(); 92 b = (Bid) s.load( Bid.class, bid ); 93 a = (Auction) s.load( Auction.class, aid ); 94 assertFalse( Hibernate.isInitialized(b) ); 95 assertFalse( Hibernate.isInitialized(a) ); 96 assertSame( s.get( Bid.class, bid ), b ); 97 assertTrue( Hibernate.isInitialized(b) ); 98 assertSame( s.get(Auction.class, aid ), a ); 99 assertTrue( Hibernate.isInitialized(a) ); 100 assertSame( b, a.getSuccessfulBid() ); 101 assertFalse( Hibernate.isInitialized( a.getBids() ) ); 102 assertSame( a.getBids().iterator().next(), b ); 103 assertTrue( b.isSuccessful() ); 104 t.commit(); 105 s.close(); 106 } 107 108 protected String [] getMappings() { 109 return new String [] { "bidi/Auction.hbm.xml" }; 110 } 111 112 public static Test suite() { 113 return new TestSuite(AuctionTest.class); 114 } 115 116 } 117 118 | Popular Tags |