[jboss-user] [JBoss Seam] - Re: validation & selectManyListbox
wiberto
do-not-reply at jboss.com
Fri Aug 10 02:35:06 EDT 2007
I was able to trace the calls until I found where the error was coming from. Basically it comes because the entityManager is null, and it tries to create one by name. Since I didn't have "entityManager" defined in my components.xml it never created one.
Since you mentioned that Seam 2.0 had redone this area, I decided to upgrade before adding stuff to my components.xml since it seemed weird that it would have an entitymanager available for the rest of the stuff except for this (but I think I know why now)
So I updated to Seam 2.0 and when I run it now I get this error:
| java.lang.NullPointerException
| at org.jboss.seam.framework.EntityIdentifier.<init>(EntityIdentifier.java:15)
| at org.jboss.seam.ui.converter.EntityConverterStore.put(EntityConverterStore.java:60)
| at org.jboss.seam.ui.converter.EntityConverter.getAsString(EntityConverter.java:69)
| at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getFormattedValue(HtmlBasicRenderer.java:469)
| at com.sun.faces.renderkit.html_basic.SelectManyCheckboxListRenderer.renderOption(SelectManyCheckboxListRenderer.java:249)
| at com.sun.faces.renderkit.html_basic.SelectManyCheckboxListRenderer.encodeEnd(SelectManyCheckboxListRenderer.java:146)
| at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:833)
| at javax.faces.component.UIComponent.encodeAll(UIComponent.java:896)
| at javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
| at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:809)
|
which leads me to believe it's the same issue. There is no entityManager. I didn't debug, but since it wasn't working before I wasn't expecting it to now.
So I added the following to the components.xml:
| <persistence:managed-persistence-context name="entityManager"
| auto-create="true"
| persistence-unit-jndi-name="java:/numinsPersistenceUnit" />
|
Now I get:
| org.hibernate.TransientObjectException: The instance was not associated with this session
| at org.hibernate.impl.SessionImpl.getIdentifier(SessionImpl.java:1375)
| at org.hibernate.search.impl.FullTextSessionImpl.getIdentifier(FullTextSessionImpl.java:331)
| at org.jboss.seam.persistence.HibernateSessionProxy.getIdentifier(HibernateSessionProxy.java:205)
| at org.jboss.seam.persistence.HibernatePersistenceProvider.getId(HibernatePersistenceProvider.java:114)
| at org.jboss.seam.framework.EntityIdentifier.<init>(EntityIdentifier.java:15)
| at org.jboss.seam.ui.converter.EntityConverterStore.put(EntityConverterStore.java:60)
|
With this I think that the original object was loaded with something else and that another entitymanager is trying to use it now. Is this because of the whole Seam managed thing?
I don't have my entities defined in components.xml. I just have the @Entity annotation in the class itself.
I went ahed and changed the @Name to something else so it wouldn't collide and added it to the components.xml to try it out. So I added:
| <framework:entity-home name="role"
| entity-class="com.numbersinsight.data.security.Role"
| scope="session"
| auto-create="true">
| <framework:id>#{roleId}</framework:id>
| </framework:entity-home>
|
And the error message is:
| Caused by: java.lang.IllegalArgumentException: Can not set com.numbersinsight.data.security.Role field com.numbersinsight.admin.action.RoleFinderAction.role to org.jboss.seam.framework.EntityHome_$$_javassist_68
| at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
| at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)
| at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63)
| at java.lang.reflect.Field.set(Field.java:657)
| at org.jboss.seam.util.Reflections.set(Reflections.java:64)
|
Why isn't it using the same entitymanager all around?
I think I'm moving in the right direction and have an idea of how it's behaving, but it's confusing.
I also tried using the hibernate-entity-home and got a class cast about going from a seam session to a hibernate session. I'll keep playing around to see what I can find.
Any ideas?
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4072847#4072847
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4072847
More information about the jboss-user
mailing list