one-to-one associations inside joined-subclasses don't work

Description

One-to-one associations contained within a joined-subclass don't work. I was able to fix the stack trace by switching to a many-to-one association.

Stack trace:

ERROR (RMIStrategyMapImpl:getPerformanceChart) - No performance chart information was returned because an error occurred
net.sf.morph.transform.TransformationException: Error copying source Key Focus Area (class com.spider.scoreboard.hdao.IMetric$$EnhancerByCGLIB$$a90a1df2) to destination (this node does not yet have a label) (class com.spider.scoreboard.hdao.impl.ScorecardNodeHDao)
at net.sf.morph.transform.transformers.BaseTransformer.copy(BaseTransformer.java:347)
at net.sf.morph.transform.transformers.SimpleDelegatingTransformer.convertImpl(SimpleDelegatingTransformer.java:177)
at net.sf.morph.transform.transformers.BaseTransformer.convert(BaseTransformer.java:244)
at sun.reflect.GeneratedMethodAccessor90.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at net.sf.composite.util.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:53)
at $Proxy10.convert(Unknown Source)
at net.sf.morph.util.TransformerUtils.transform(TransformerUtils.java:152)
at net.sf.morph.transform.copiers.BasePropertyNameCopier.copyProperty(BasePropertyNameCopier.java:115)
at net.sf.morph.transform.copiers.PropertyNameMatchingCopier.copyImpl(PropertyNameMatchingCopier.java:91)
at net.sf.morph.transform.transformers.BaseTransformer.copy(BaseTransformer.java:341)
at net.sf.morph.transform.transformers.SimpleDelegatingTransformer.convertImpl(SimpleDelegatingTransformer.java:177)
at net.sf.morph.transform.transformers.BaseTransformer.convert(BaseTransformer.java:244)
at sun.reflect.GeneratedMethodAccessor90.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at net.sf.composite.util.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:53)
at $Proxy10.convert(Unknown Source)
at net.sf.morph.util.TransformerUtils.transform(TransformerUtils.java:152)
at net.sf.morph.transform.copiers.ContainerCopier.put(ContainerCopier.java:155)
at net.sf.morph.transform.copiers.ContainerCopier.copyImpl(ContainerCopier.java:222)
at net.sf.morph.transform.transformers.BaseTransformer.copy(BaseTransformer.java:341)
at net.sf.morph.transform.transformers.SimpleDelegatingTransformer.convertImpl(SimpleDelegatingTransformer.java:177)
at net.sf.morph.transform.transformers.BaseTransformer.convert(BaseTransformer.java:244)
at sun.reflect.GeneratedMethodAccessor90.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at net.sf.composite.util.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:53)
at $Proxy10.convert(Unknown Source)
at net.sf.morph.util.TransformerUtils.transform(TransformerUtils.java:152)
at net.sf.morph.transform.copiers.BasePropertyNameCopier.copyProperty(BasePropertyNameCopier.java:115)
at net.sf.morph.transform.copiers.PropertyNameMatchingCopier.copyImpl(PropertyNameMatchingCopier.java:91)
at net.sf.morph.transform.transformers.BaseTransformer.copy(BaseTransformer.java:341)
at net.sf.morph.transform.transformers.SimpleDelegatingTransformer.convertImpl(SimpleDelegatingTransformer.java:177)
at net.sf.morph.transform.transformers.BaseTransformer.convert(BaseTransformer.java:244)
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:324)
at net.sf.composite.util.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:53)
at $Proxy10.convert(Unknown Source)
at net.sf.morph.util.TransformerUtils.transform(TransformerUtils.java:152)
at net.sf.morph.transform.copiers.BasePropertyNameCopier.copyProperty(BasePropertyNameCopier.java:115)
at net.sf.morph.transform.copiers.PropertyNameMatchingCopier.copyImpl(PropertyNameMatchingCopier.java:91)
at net.sf.morph.transform.transformers.BaseTransformer.copy(BaseTransformer.java:341)
at net.sf.morph.transform.transformers.SimpleDelegatingTransformer.convertImpl(SimpleDelegatingTransformer.java:177)
at net.sf.morph.transform.transformers.BaseTransformer.convert(BaseTransformer.java:244)
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:324)
at net.sf.composite.util.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:53)
at $Proxy10.convert(Unknown Source)
at net.sf.morph.util.TransformerUtils.transform(TransformerUtils.java:152)
at net.sf.morph.transform.copiers.BasePropertyNameCopier.copyProperty(BasePropertyNameCopier.java:115)
at net.sf.morph.transform.copiers.PropertyNameMatchingCopier.copyImpl(PropertyNameMatchingCopier.java:91)
at net.sf.morph.transform.transformers.BaseTransformer.copy(BaseTransformer.java:341)
at net.sf.morph.transform.transformers.SimpleDelegatingTransformer.convertImpl(SimpleDelegatingTransformer.java:177)
at net.sf.morph.transform.transformers.BaseTransformer.convert(BaseTransformer.java:244)
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:324)
at net.sf.composite.util.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:53)
at $Proxy10.convert(Unknown Source)
at net.sf.morph.util.TransformerUtils.transform(TransformerUtils.java:152)
at net.sf.morph.transform.copiers.ContainerCopier.put(ContainerCopier.java:155)
at net.sf.morph.transform.copiers.ContainerCopier.copyImpl(ContainerCopier.java:222)
at net.sf.morph.transform.transformers.BaseTransformer.copy(BaseTransformer.java:341)
at net.sf.morph.transform.transformers.SimpleDelegatingTransformer.convertImpl(SimpleDelegatingTransformer.java:177)
at net.sf.morph.transform.transformers.BaseTransformer.convert(BaseTransformer.java:244)
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:324)
at net.sf.composite.util.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:53)
at $Proxy10.convert(Unknown Source)
at net.sf.morph.util.TransformerUtils.transform(TransformerUtils.java:152)
at net.sf.morph.transform.copiers.BasePropertyNameCopier.copyProperty(BasePropertyNameCopier.java:115)
at net.sf.morph.transform.copiers.PropertyNameMatchingCopier.copyImpl(PropertyNameMatchingCopier.java:91)
at net.sf.morph.transform.transformers.BaseTransformer.copy(BaseTransformer.java:341)
at net.sf.morph.transform.transformers.SimpleDelegatingTransformer.convertImpl(SimpleDelegatingTransformer.java:177)
at net.sf.morph.transform.transformers.BaseTransformer.convert(BaseTransformer.java:244)
at net.sf.morph.transform.transformers.BaseTransformer.convert(BaseTransformer.java:256)
at com.spider.scoreboard.remote.RMIStrategyMapImpl.getPerformanceChart(RMIStrategyMapImpl.java:99)
at com.spider.scoreboard.remote.RMIStrategyMapImpl$$FastClassByCGLIB$$95e564a5.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:661)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:122)
at org.springframework.aop.interceptor.TraceInterceptor.invoke(TraceInterceptor.java:134)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:606)
at com.spider.scoreboard.remote.RMIStrategyMapImpl$$EnhancerByCGLIB$$5e0ec630.getPerformanceChart(<generated>)
at com.spider.scoreboard.remote.RMIStrategyMapImpl$$FastClassByCGLIB$$95e564a5.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:661)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:122)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:57)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:57)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:606)
at com.spider.scoreboard.remote.RMIStrategyMapImpl$$EnhancerByCGLIB$$5e0ec630_2.getPerformanceChart(<generated>)
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:324)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:155)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:122)
at org.springframework.remoting.support.RemoteInvocationTraceInterceptor.invoke(RemoteInvocationTraceInterceptor.java:68)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
at $Proxy12.getPerformanceChart(Unknown Source)
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:324)
at com.caucho.hessian.server.HessianSkeleton.invoke(HessianSkeleton.java:141)
at org.springframework.remoting.caucho.HessianServiceExporter.handleRequest(HessianServiceExporter.java:87)
at com.spider.scoreboard.framework.ScoreboardServiceExporter.handleRequest(ScoreboardServiceExporter.java:18)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:684)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:625)
at org.springframework.web.servlet.FrameworkServlet.serviceWrapper(FrameworkServlet.java:386)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:355)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:200)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146)
at net.sf.morph.web.MorphFilter.doFilter(MorphFilter.java:43)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:172)
at com.spider.scoreboard.framework.springx.ScoreboardOpenSessionInViewFilter.doFilterInternal(ScoreboardOpenSessionInViewFilter.java:48)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146)
at com.spider.scoreboard.framework.RequestLogFilter.doFilterInternal(RequestLogFilter.java:28)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2358)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)
Caused by: net.sf.morph.reflect.ReflectionException: Unable to retrieve property 'id' from bean Key Focus Area (class com.spider.scoreboard.hdao.IMetric$$EnhancerByCGLIB$$a90a1df2)
at net.sf.morph.reflect.reflectors.BaseReflector.get(BaseReflector.java:658)
at net.sf.morph.reflect.reflectors.SimpleDelegatingReflector.getImpl(SimpleDelegatingReflector.java:139)
at net.sf.morph.reflect.reflectors.BaseReflector.get(BaseReflector.java:604)
at sun.reflect.GeneratedMethodAccessor87.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at net.sf.composite.util.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:53)
at $Proxy0.get(Unknown Source)
at net.sf.morph.transform.copiers.BasePropertyNameCopier.copyProperty(BasePropertyNameCopier.java:105)
at net.sf.morph.transform.copiers.PropertyNameMatchingCopier.copyImpl(PropertyNameMatchingCopier.java:91)
at net.sf.morph.transform.transformers.BaseTransformer.copy(BaseTransformer.java:341)
... 169 more
Caused by: java.lang.reflect.InvocationTargetException
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:324)
at net.sf.morph.reflect.support.MethodHolder.invokeAccessor(MethodHolder.java:95)
at net.sf.morph.reflect.support.ReflectionInfo.get(ReflectionInfo.java:165)
at net.sf.morph.reflect.reflectors.ObjectReflector.getImpl(ObjectReflector.java:169)
at net.sf.morph.reflect.reflectors.BaseReflector.get(BaseReflector.java:604)
... 179 more
Caused by: java.lang.ClassCastException
at com.spider.scoreboard.hdao.IMetric$$FastClassByCGLIB$$af3265b3.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:137)
at com.spider.scoreboard.hdao.IMetric$$EnhancerByCGLIB$$a90a1df2.getId(<generated>)
... 187 more

Here is my mapping file:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

<hibernate-mapping
>
<class
name="com.spider.scoreboard.hdao.impl.ScorecardNodeHDao"
table="scorecardnodes"
proxy="com.spider.scoreboard.hdao.IScorecardNode"
dynamic-update="false"
dynamic-insert="false"
select-before-update="false"
optimistic-lock="version"
>

<id
name="id"
column="scorecardnodeid"
type="java.lang.Integer"
>
<generator class="assigned">
<!--
To add non XDoclet generator parameters, create a file named
hibernate-generator-params-ScorecardNodeHDao.xml
containing the additional parameters and place it in your merge dir.
-->
</generator>
</id>

<property
name="label"
type="java.lang.String"
update="true"
insert="true"
access="property"
column="scorecardnodename"
not-null="true"
/>

<property
name="leftBound"
type="java.lang.Integer"
update="true"
insert="true"
access="property"
column="leftBound"
/>

<property
name="rightBound"
type="java.lang.Integer"
update="true"
insert="true"
access="property"
column="rightBound"
/>

<property
name="nodeType"
type="int"
update="true"
insert="true"
access="property"
column="nodeType"
/>

<property
name="weighting"
type="double"
update="true"
insert="true"
access="property"
column="weighting"
/>

<many-to-one
name="root"
class="com.spider.scoreboard.hdao.impl.ScorecardNodeHDao"
cascade="none"
outer-join="auto"
update="true"
insert="true"
access="property"
column="scorecardrootnodeid"
/>

<!--
To add non XDoclet property mappings, create a file named
hibernate-properties-ScorecardNodeHDao.xml
containing the additional properties and place it in your merge dir.
-->

<joined-subclass
name="com.spider.scoreboard.hdao.impl.MetricHDao"
table="metrics"
dynamic-update="false"
dynamic-insert="false"
lazy="true"
proxy="com.spider.scoreboard.hdao.IMetric"
>
<key
column="scorecardnodeid"
/>

<property
name="equation"
type="java.lang.String"
update="true"
insert="true"
access="property"
column="equation"
/>

<property
name="lastReminded"
type="java.util.Date"
update="true"
insert="true"
access="property"
column="lastReminded"
/>

<property
name="metricId"
type="java.lang.Integer"
update="true"
insert="true"
access="property"
column="metricid"
/>

<property
name="defaultBase"
type="java.lang.Double"
update="true"
insert="true"
access="property"
column="base"
/>

<property
name="defaultGoal"
type="java.lang.Double"
update="true"
insert="true"
access="property"
column="goal"
/>

<one-to-one
name="dataSeries"
class="com.spider.scoreboard.hdao.impl.SeriesHDao"
cascade="none"
outer-join="auto"
constrained="false"
/>

<many-to-one
name="scoringPlot"
class="com.spider.scoreboard.hdao.impl.ScoringPlotHDao"
cascade="none"
outer-join="auto"
update="true"
insert="true"
access="property"
column="scoringplotid"
/>

</joined-subclass>

</class>

</hibernate-mapping>

Activity

Matt SgarlataMay 11, 2005 at 8:44 PM

I don't have time to dig through and try to figure out how Hibernate's test cases are structured. The stack trace may be long, but it's not like you have to read the whole thing. Below is the important part. Is that better? Basically when I invoke IMetric.getId() a ClassCastException is being thrown by CGLIB.

Caused by: net.sf.morph.reflect.ReflectionException: Unable to retrieve property 'id' from bean Key Focus Area (class com.spider.scoreboard.hdao.IMetric$$EnhancerByCGLIB$$a90a1df2)
at net.sf.morph.reflect.reflectors.BaseReflector.get(BaseReflector.java:658)
at net.sf.morph.reflect.reflectors.SimpleDelegatingReflector.getImpl(SimpleDelegatingReflector.java:139)
at net.sf.morph.reflect.reflectors.BaseReflector.get(BaseReflector.java:604)
at sun.reflect.GeneratedMethodAccessor87.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at net.sf.composite.util.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:53)
at $Proxy0.get(Unknown Source)
at net.sf.morph.transform.copiers.BasePropertyNameCopier.copyProperty(BasePropertyNameCopier.java:105)
at net.sf.morph.transform.copiers.PropertyNameMatchingCopier.copyImpl(PropertyNameMatchingCopier.java:91)
at net.sf.morph.transform.transformers.BaseTransformer.copy(BaseTransformer.java:341)
... 169 more
Caused by: java.lang.reflect.InvocationTargetException
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:324)
at net.sf.morph.reflect.support.MethodHolder.invokeAccessor(MethodHolder.java:95)
at net.sf.morph.reflect.support.ReflectionInfo.get(ReflectionInfo.java:165)
at net.sf.morph.reflect.reflectors.ObjectReflector.getImpl(ObjectReflector.java:169)
at net.sf.morph.reflect.reflectors.BaseReflector.get(BaseReflector.java:604)
... 179 more
Caused by: java.lang.ClassCastException
at com.spider.scoreboard.hdao.IMetric$$FastClassByCGLIB$$af3265b3.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:137)
at com.spider.scoreboard.hdao.IMetric$$EnhancerByCGLIB$$a90a1df2.getId(<generated>)
... 187 more

I did spend a long time debugging this, and I have fully isolated the problem: one-to-one associations in joined-subclasses don't work. Just because I didn't require a toy example of the problem doesn't mean that I didn't isolate is. I switched to a many-to-one association and the problem was gone, so the one-to-one association has to be the problem.

Rick Hightower ran into a similar issue when he accidentally specified a second ID attribute in a joined-subclass. Here is an account of his error:

http://www.jroller.com/comments/RickHigh/home/hiberante_3_annotations_code_sample

He got a ClassCastException having to do with joined subclasses and ID attributes and the error I encountered also has to do with joined subclasses and ID attributes. In Rick's case he specified something incorrectly. In my case I specified everything correctly but got an error. The two situations are certainly different but they bear a striking resemblence. I'm thinking the key here is the ClassCastException that's occurring in CGLIB when attempting to read the ID attribute of the joined-subclass. I'm guessing the problem is that the one-to-one association is confusing Hibernate so that it thinks the JoinedSubclass is a RootClass instead.

Sorry for not constructing a full test case for you, but if that really is the issue I'm thinking it will be trivial to fix.

Matt

GavinGMay 11, 2005 at 8:15 PM

Note that org.hibernate.test.onetoone.joined is a good exqample of how this functionality does work under normal circumstances.

GavinGMay 11, 2005 at 8:13 PM

Are you serious? I am supposed to believe there is a bug in Hibernate on the basis of a 300-line long stack trace that you have obviously not seriously tried to simplify and debug?

Try resubmitting once you

  • have simplified your problem down to bare bones and reproduced in a trivial unit test

  • are able to submit this trivial runnable test case to JIRA

Rejected

Details

Assignee

Reporter

Affects versions

Priority

Created May 11, 2005 at 6:36 PM
Updated May 11, 2005 at 8:44 PM
Resolved May 11, 2005 at 8:13 PM