[jboss-jira] [JBoss JIRA] Resolved: (EJBTHREE-378) Join Inheritance causing problem with subclass collection mapping
Emmanuel Bernard (JIRA)
jira-events at lists.jboss.org
Tue Feb 13 20:58:06 EST 2007
[ http://jira.jboss.com/jira/browse/EJBTHREE-378?page=all ]
Emmanuel Bernard resolved EJBTHREE-378.
---------------------------------------
Resolution: Rejected
no user feedback
> Join Inheritance causing problem with subclass collection mapping
> -----------------------------------------------------------------
>
> Key: EJBTHREE-378
> URL: http://jira.jboss.com/jira/browse/EJBTHREE-378
> Project: EJB 3.0
> Issue Type: Bug
> Affects Versions: EJB 3.0 RC3
> Environment: Ubuntu Linux (5.0.4), JBoss 4.0.3RC2
> Reporter: Michael Small
> Assigned To: Emmanuel Bernard
> Attachments: Client.java, ClientContact.java, Provider.java, ProviderContact.java, Relationship.java, RelationshipBinding.java, ValueObject.java
>
>
> I have the following class structure:
> ValueObject
> Relationship
> RelationshipBinding
> Participant
> Client
> Provider
> Employee
> ValueObject is a EmbeddableSuperClass which Relationship extends. Relationship has a @OneToMany bidirectional association with RelationshipBinding. Participant, Client, Provider, and Employee extend RelationshipBinding using the JOIN strategy. The Participant and Employee VOs have associations to Contact objects (@OneToOne) ... works fine. The Client and Provider VOs have associations to ClientContact and ProviderContact objects, respectively, using a bidirectional @OneToMany. Strangley, when I query for a Provider, I get the following stack trace:
> 11:42:28,279 ERROR [BasicPropertyAccessor] IllegalArgumentException in class: com.tasconline.client.ClientContact, setter method of property: client
> 11:42:28,279 ERROR [BasicPropertyAccessor] expected type: com.tasconline.client.Client, actual value: com.tasconline.provider.Provider
> 11:42:28,279 INFO [DefaultLoadEventListener] Error performing load command
> org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of com.tasconline.client.ClientContact.client
> at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:104)
> at org.hibernate.tuple.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:330)
> at org.hibernate.tuple.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:188)
> at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3231)
> at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:126)
> at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:842)
> at org.hibernate.loader.Loader.doQuery(Loader.java:717)
> at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:223)
> at org.hibernate.loader.Loader.loadEntity(Loader.java:1782)
> at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:93)
> at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:81)
> at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:2729)
> at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:365)
> at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:346)
> at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:123)
> at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:177)
> at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87)
> at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:781)
> at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:753)
> at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:266)
> at org.hibernate.type.EntityType.resolve(EntityType.java:303)
> at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:113)
> at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:842)
> at org.hibernate.loader.Loader.doQuery(Loader.java:717)
> at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:223)
> at org.hibernate.loader.Loader.doList(Loader.java:2147)
> at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2026)
> at org.hibernate.loader.Loader.list(Loader.java:2021)
> at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:369)
> at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:296)
> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:992)
> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
> at org.hibernate.impl.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:650)
> at org.hibernate.ejb.QueryImpl.getSingleResult(QueryImpl.java:43)
> at com.tasconline.provider.service.bean.ProviderServiceBean.findProvider(ProviderServiceBean.java:563)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:109)
> at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:32)
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
> at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:66)
> at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:134)
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
> at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:61)
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
> at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:39)
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
> at org.jboss.aspects.security.RoleBasedAuthorizationInterceptor.invoke(RoleBasedAuthorizationInterceptor.java:151)
> at org.jboss.ejb3.security.RoleBasedAuthorizationInterceptor.invoke(RoleBasedAuthorizationInterceptor.java:85)
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
> at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:63)
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
> at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:32)
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
> at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:91)
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
> at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:204)
> at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:107)
> at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:69)
> at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:566)
> at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:436)
> at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:239)
> at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:277)
> at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:168)
> Caused by: java.lang.IllegalArgumentException: argument type mismatch
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:42)
> ... 65 more
> Here's the query and code where the error occurs:
> SELECT p
> FROM Provider p
> WHERE p.relationship.relationshipId LIKE :expression OR
> p.taxId LIKE :expression OR
> p.organizationName LIKE :expression
> Here's the code that calls the query:
> List<Provider> queryResults = (List<Provider>) this.entityManager
> .createQuery(FIND_PROVIDER_FOR_TASC_FORCE_QUERY)
> .setParameter("expression", expression)
> .getResultList();
> Note that FIND_PROVIDER_FOR_TASC_FORCE_QUERY is the query string above.
> I've tried different query formats and event Query.getSingleResult() ... all produce the same error. I posted the problem on the forum (along with reading just about all the EJB3 and Hibernate documentation).
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list