I am passing an entity with a lazy loaded property from one session bean to 
another sessionbean and getting a LazyInitializationException. It's still 
inside of jboss so I don't understand why it can't load it. Is this expected 
behavior? If so, what is the correct way to do it. Heres a simple example of 
what I am talking about.


@Entity
@Table(name = "LazyChild")
public class LazyChild implements java.io.Serializable {
        private Integer key;
        private String name;
        
        @Id @GeneratedValue
        @Column(name="LazyChildKey")
        public Integer getKey() { return key; }
        public void setKey(Integer key) { this.key = key; }
        
        public String getName() { return name; }
        public void setName(String s) { name = s; }
}

@Entity
@Table(name = "Test")
public class TestEntity implements java.io.Serializable {
        private Integer key;
        private LazyChild lazyChild;
        
        @Id @GeneratedValue
        @Column(name="TestKey")
        public Integer getKey() { return key; }
        public void setKey(Integer key) { this.key = key; }
        
        @OneToOne(fetch = FetchType.LAZY)
        @JoinColumn(name = "LazyChildKey")
        public LazyChild getLazyChild() { return lazyChild; }
        public void setLazyChild(LazyChild l) { lazyChild = l; }
        
}

@Stateless
@RemoteBinding (jndiBinding="TestSessionHelper")
@Remote(TestSessionHelper.class)
public class TestSessionHelperBean {
        @PersistenceContext
        protected EntityManager em;
        
        public void useLazyChild(TestEntity entity) {
                entity.getLazyChild().getName();
        }       

}

@Stateless
@RemoteBinding (jndiBinding="TestSession")
@Remote(TestSession.class)
public class TestSessionBean {
        @PersistenceContext
        protected EntityManager em;

        @EJB TestSessionHelper m_sessionHelper;
        
        public void doIt() {
                TestEntity entity = em.find(TestEntity.class, 1);
                m_sessionHelper.useLazyChild(entity);
        }

}

public class ClientSideTest {
        public static void main(String[] args) throws Exception {
                InitialContext ctx = new InitialContext();
                TestSession session = (TestSession)ctx.lookup("TestSession");
                session.doIt();
        }
}


When I deploy these session beans and run ClientSideTest.main I get the 
following exception on the server side.

15:28:52,109 ERROR [LazyInitializationException] could not initialize proxy - no
 Session
org.hibernate.LazyInitializationException: could not initialize proxy - no Sessi
on
        at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyIn
itializer.java:57)
        at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(Abstrac
tLazyInitializer.java:111)
        at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.intercept(CGLIBLa
zyInitializer.java:160)
        at alliancetechnical.ejb3.session.LazyChild$$EnhancerByCGLIB$$6f310ca4.g
etName()
        at alliancetechnical.ejb3.session.TestSessionHelperBean.useLazyChild(Tes
tSessionHelperBean.java:14)
...
        at $Proxy670.useLazyChild(Unknown Source)
        at alliancetechnical.ejb3.session.TestSessionBean.doIt(TestSessionBean.j
ava:19)

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4009039#4009039

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4009039
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to