anonymous wrote : I am getting a LazyInitializationException: failed to lazily initialize
a collection of role : eco.ejb3.entity.Subject.usersThatSubscribedToMe, no session or
session was closed
A LazyInitializationException occurs when the entity or its associated collection is being
accessed when the session is no longer available. In your case, i guess, your JUnit test
first called a method on the bean to retrieve the entity. When this is done, a session is
opened to retrieve that persistent object. The object is then returned to the client (your
JUnit test case). At the same time the session is closed (since the bean method
transaction completed).
Now at some later point in time, in your testcase you invoke the addPublicSubject method
on the bean passing it the entity which was loaded as part of a session which no longer
exists. Now when you try to access the entities collection, it throws this
LazyInitializationException.
To avoid this exception, you either have to access that collection when the session is
open or use the merge method on the entitymanager to attach the entity to a session. Like
this:
@TransactionAttribute(TransactionAttributeType.REQUIRED)
| public void addPublicSubject(Subject s, User u) {
|
| //merge the subject. Remember that the merge operation, returns a merged object.
| // So use this returned object, henceforth in the code.
| Subject mergedSubject = entityManager.merge(s);
|
| //Let's also merge the User since it too was detached
| User mergedUser = entityManager.merge(u);
|
| mergedSubject.getUsersThatSubscribedToMe().add(mergedUser);
|
| entityManager.persist(mergedSubject);
|
| }
This is just a pseudo-code and you might have to do some additional changes to get this
working. If this doesn't work, then please post back with the exception logs and the
code changes that you did.
While posting the logs or code or xml content, remember to wrap it in a code block using
the Code button in the message editor window and please hit the Preview button to make
sure your post is correctly formatted
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4145885#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...