]
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: