I'm working with Seam 1.1, and building a new application.  This application 
has an Account object which is an Entity POJO.  The account has many Sites, a 
Site has many Flows, and a Flow has many Actions.  All Entity POJOs.  All One 
to Many relationships are defined using Lists, as that is what makes sense.

Upon login, a User object gets loaded, there is a Many to One relationship 
between Users and Accounts.  

This is the getFlows method on the Site object, as an example, all the 
relationships are similar:

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = 
"site")
  |     @OrderBy("id")
  |     public List<Flow> getFlows() {
  |         return this.mFlows;
  |     }


My Login action uses an EntityManager provided by Seam:

    @In(create = true)
  |     private EntityManager entityManager;

and in my persistance.xml I have:

         <property name="jboss.entity.manager.factory.jndi.name" 
value="java:/keynoteEntityManagerFactory" />

and in my components.xml I have:

        <component name="entityManager"
  |             class="org.jboss.seam.core.ManagedPersistenceContext">
  |             <property name="persistenceUnitJndiName">
  |                     java:/keynoteEntityManagerFactory
  |             </property>
  |     </component>

My problems are this:

If I try to use lazy loading, I can get the account from the user, and I can 
get the Sites from the Account, but when I try to get the Flows from the Site I 
get these errors:
01:41:55,247 ERROR [LazyInitializationException] failed to lazily initialize a 
collection of role: com.digitalsanctuary.keynote.ejb.Site.flows, no session or 
session was closed
  | org.hibernate.LazyInitializationException: failed to lazily initialize a 
collection of role: com.digitalsanctuary.keynote.ejb.Site.flows, no session or 
session was closed

If I try to use Eager loading I get:

cannot simultaneously fetch multiple bags

Errors.  If I try to use the @IndexColumn annotation as per the threads on this 
error in Hibernate forums, then I get empty items in my list until the actual 
index id shows up (i.e. The list of Sites for a given account may have primary 
key id's of 5, 6, 7, and 8.  When I use the IndexColumn annotation, my List of 
Sites ends up with 5 empty items before the 4 real items (this not only causes 
code issues, but makes my data tables look awful).


Basically I can't figure out the right combination of settings to get things to 
work.  Ideally I'd like to Lazily load everything, as many user flows won't 
require the sub-items, however, I can't figure out how to avoid the LIE, even 
though I'm using the Seam EntityManager.

I'm new to EJB3, and pretty new to Seam, but I've been pouring over the docs 
and forums and so far haven't worked it out.  Any help would be greatly 
appreciated.  Thanks!

Modoc


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

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

Reply via email to