[jboss-jira] [JBoss JIRA] Updated: (JBAS-5474) @PostLoad -> LazyInitializationException: illegal access to loading collection ond a @OneToMany with FetchType.EAGER

Tom van den Berge (JIRA) jira-events at lists.jboss.org
Wed Aug 20 04:12:26 EDT 2008


     [ https://jira.jboss.org/jira/browse/JBAS-5474?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Tom van den Berge updated JBAS-5474:
------------------------------------

    Attachment: Child.java
                Parent.java
                PostLoadTest.java


This test case shows the incorrect behaviour of the PostLoad method. 

By the way, the same behaviour shows when using the association's setter method instead of the PostLoad method. I'm not sure though if the setter method is supposed to be able to access the collection. Intuitively, one would expect it to work though.

> @PostLoad -> LazyInitializationException: illegal access to loading collection ond a @OneToMany with FetchType.EAGER
> --------------------------------------------------------------------------------------------------------------------
>
>                 Key: JBAS-5474
>                 URL: https://jira.jboss.org/jira/browse/JBAS-5474
>             Project: JBoss Application Server
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: EJB3
>    Affects Versions: JBossAS-4.2.2.GA
>         Environment: Win XP SP2, Java 1.5.0_15-b04
>            Reporter: Stefan Lindner
>            Assignee: Emmanuel Bernard
>         Attachments: Child.java, Parent.java, PostLoadTest.java
>
>
> I have a bean with a @OneToMany relation mapping like
> 	private List<TherapieeinheitBean> therapieeinheiten;
>      	@OneToMany(
> 			cascade = {CascadeType.REFRESH},
> 			fetch = FetchType.EAGER,
> 			mappedBy="therapiekatalog"
> 	)
> with FetchType.EAGER and a simnple @PostLoad like
>      	@PostLoad
> 	public void postLoad() {
> 		System.out.println("!!!!!!!!!! postLoad !!!!!!!!!!");
> 		System.out.print("size: " + therapieeinheiten.size());
> 	}
> When an entity of this bean is loaded JBoss trows 
>      org.hibernate.LazyInitializationException: illegal access to loading collection
>         at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:341)
>         at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:86)
>         at org.hibernate.collection.PersistentBag.iterator(PersistentBag.java:249)
>         at de.visiodesk.therapiekatalog.TherapiekatalogBean.postLoad(TherapiekatalogBean.java:170)
>         .
>         .
>         .
> and prints the messages
>      WARN  [LoadContexts] fail-safe cleanup (collections) : org.hibernate.engine.loading.CollectionLoadContext at 2c8ce9<rs=Ingres-ResultSet[18523]>
>      WARN  [CollectionLoadContext] On CollectionLoadContext#cleanup, localLoadingCollectionKeys contained [206] entries
> afterwards. The PostLoad method should be called after the data was completely loaded. Is there a workaround for this Problem? I found some other ressources on the net where peole had the same problem, but I saw no resolution, no hint, no workaround.
>      

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list