You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ibatis.apache.org by "Aymeric Alibert (JIRA)" <ib...@incubator.apache.org> on 2004/12/20 17:07:21 UTC
[jira] Created: (IBATIS-33) Complex Collection Properties & Statement Namespaces
Complex Collection Properties & Statement Namespaces
----------------------------------------------------
Key: IBATIS-33
URL: http://nagoya.apache.org/jira/browse/IBATIS-33
Project: iBatis for Java
Type: Bug
Components: SQL Maps
Versions: 2.0.8
Environment: Windows XP - Weblogic 8.1.4 - Oracle 8.1.7
Spring with IBATIS 2.0.8
Reporter: Aymeric Alibert
Complex collection properties does not seem to work when statement namespaces are enabled.
I have a running application developped using IBATIS 2.0.8. I decided to enable statement namespaces and did the following changes:
sql-map.config:
<settings useStatementNamespaces="true"/>
java class:
public AgentAccount findAccountByAgentId(String agentId) {
return (AgentAccount) getSqlMapClientTemplate().queryForObject("MyNameSpace.getAgentAccountById",agentId);
}
sqlmap.xml:
<sqlMap namespace="MyNameSpace">
<resultMap id="agentAccountResult" class="com.alliantenergy.csi.energyassistance.business.domain.AgentAccount">
<result property="agentId" column="AGENT_ID"/>
<result property="roles" column="AGENT_ID" select="MyNameSpace.getAgentRoles"/>
</resultMap>
<select id="getAgentAccountById" resultMap="agentAccountResult">
select
AGENT_ID
from EAC_AGENT
where AGENT_ID = #value#
</select>
<select id="getAgentRoles" resultClass="int">
select ROLE_ID from EAC_AGENT_ROLE where AGENT_ID = #value#
</select>
Note that I am using 'MyNameSpace.getAgentRoles' for the sub query.
IBATIS load the map fine but fails at runtime with the following exception:
java.io.NotSerializableException: com.ibatis.sqlmap.engine.mapping.result.loader.LazyResultLoader
java.rmi.UnmarshalException: cannot unmarshaling return; nested exception is:
java.io.NotSerializableException: com.ibatis.sqlmap.engine.mapping.result.loader.LazyResultLoader
at weblogic.rmi.internal.ServerRequest.unmarshalReturn(ServerRequest.java:102)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:285)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:244)
at com.alliantenergy.csi.energyassistance.remote.ejb.AccountManagement_cqphao_EOImpl_813_WLStub.authenticate(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 org.springframework.remoting.rmi.RmiClientInterceptorUtils.doInvoke(RmiClientInterceptorUtils.java:103)
at org.springframework.ejb.access.SimpleRemoteSlsbInvokerInterceptor.doInvoke(SimpleRemoteSlsbInvokerInterceptor.java:76)
at org.springframework.ejb.access.AbstractRemoteSlsbInvokerInterceptor.invoke(AbstractRemoteSlsbInvokerInterceptor.java:78)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:143)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
at $Proxy16.authenticate(Unknown Source)
at com.alliantenergy.csi.ui.energyassistance.presentation.agentservice.LogonAction.doExecute(LogonAction.java:88)
at com.alliantenergy.csi.ui.energyassistance.framework.struts.BaseAction.execute(BaseAction.java:126)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:996)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6452)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3661)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2630)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
Caused by: java.io.NotSerializableException: com.ibatis.sqlmap.engine.mapping.result.loader.LazyResultLoader
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1054)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)
at weblogic.rmi.internal.CBVOutputStream.writeObject(CBVOutputStream.java:78)
at weblogic.rmi.internal.ServerRequest.unmarshalReturn(ServerRequest.java:94)
... 31 more
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://nagoya.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
http://www.atlassian.com/software/jira
Re: [jira] Created: (IBATIS-33) Complex Collection Properties & Statement Namespaces
Posted by Brandon Goodin <br...@gmail.com>.
What is the type of your roles property? It appears that you are
trying to return a List of ints? Could you please provide more
information on the underlying code?
Brandon
On Mon, 20 Dec 2004 08:07:21 -0800 (PST), Aymeric Alibert (JIRA)
<ib...@incubator.apache.org> wrote:
> Complex Collection Properties & Statement Namespaces
> ----------------------------------------------------
>
> Key: IBATIS-33
> URL: http://nagoya.apache.org/jira/browse/IBATIS-33
> Project: iBatis for Java
> Type: Bug
> Components: SQL Maps
> Versions: 2.0.8
> Environment: Windows XP - Weblogic 8.1.4 - Oracle 8.1.7
> Spring with IBATIS 2.0.8
> Reporter: Aymeric Alibert
>
> Complex collection properties does not seem to work when statement namespaces are enabled.
> I have a running application developped using IBATIS 2.0.8. I decided to enable statement namespaces and did the following changes:
> sql-map.config:
> <settings useStatementNamespaces="true"/>
>
> java class:
> public AgentAccount findAccountByAgentId(String agentId) {
> return (AgentAccount) getSqlMapClientTemplate().queryForObject("MyNameSpace.getAgentAccountById",agentId);
> }
>
> sqlmap.xml:
> <sqlMap namespace="MyNameSpace">
> <resultMap id="agentAccountResult" class="com.alliantenergy.csi.energyassistance.business.domain.AgentAccount">
> <result property="agentId" column="AGENT_ID"/>
> <result property="roles" column="AGENT_ID" select="MyNameSpace.getAgentRoles"/>
> </resultMap>
>
> <select id="getAgentAccountById" resultMap="agentAccountResult">
> select
> AGENT_ID
> from EAC_AGENT
> where AGENT_ID = #value#
> </select>
>
> <select id="getAgentRoles" resultClass="int">
> select ROLE_ID from EAC_AGENT_ROLE where AGENT_ID = #value#
> </select>
>
> Note that I am using 'MyNameSpace.getAgentRoles' for the sub query.
> IBATIS load the map fine but fails at runtime with the following exception:
>
> java.io.NotSerializableException: com.ibatis.sqlmap.engine.mapping.result.loader.LazyResultLoader
> java.rmi.UnmarshalException: cannot unmarshaling return; nested exception is:
> java.io.NotSerializableException: com.ibatis.sqlmap.engine.mapping.result.loader.LazyResultLoader
> at weblogic.rmi.internal.ServerRequest.unmarshalReturn(ServerRequest.java:102)
> at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:285)
> at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:244)
> at com.alliantenergy.csi.energyassistance.remote.ejb.AccountManagement_cqphao_EOImpl_813_WLStub.authenticate(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 org.springframework.remoting.rmi.RmiClientInterceptorUtils.doInvoke(RmiClientInterceptorUtils.java:103)
> at org.springframework.ejb.access.SimpleRemoteSlsbInvokerInterceptor.doInvoke(SimpleRemoteSlsbInvokerInterceptor.java:76)
> at org.springframework.ejb.access.AbstractRemoteSlsbInvokerInterceptor.invoke(AbstractRemoteSlsbInvokerInterceptor.java:78)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:143)
> at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
> at $Proxy16.authenticate(Unknown Source)
> at com.alliantenergy.csi.ui.energyassistance.presentation.agentservice.LogonAction.doExecute(LogonAction.java:88)
> at com.alliantenergy.csi.ui.energyassistance.framework.struts.BaseAction.execute(BaseAction.java:126)
> at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
> at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
> at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
> at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:996)
> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
> at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6452)
> at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
> at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
> at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3661)
> at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2630)
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
> Caused by: java.io.NotSerializableException: com.ibatis.sqlmap.engine.mapping.result.loader.LazyResultLoader
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1054)
> at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
> at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
> at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
> at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
> at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
> at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)
> at weblogic.rmi.internal.CBVOutputStream.writeObject(CBVOutputStream.java:78)
> at weblogic.rmi.internal.ServerRequest.unmarshalReturn(ServerRequest.java:94)
> ... 31 more
>
> --
> This message is automatically generated by JIRA.
> -
> If you think it was sent incorrectly contact one of the administrators:
> http://nagoya.apache.org/jira/secure/Administrators.jspa
> -
> If you want more information on JIRA, or have a bug to report see:
> http://www.atlassian.com/software/jira
>
>
[jira] Updated: (IBATIS-33) Complex Collection Properties & Statement Namespaces
Posted by "Aymeric Alibert (JIRA)" <ib...@incubator.apache.org>.
[ http://nagoya.apache.org/jira/browse/IBATIS-33?page=history ]
Aymeric Alibert updated IBATIS-33:
----------------------------------
Attachment: namespace.zip
I created a small test application based on the jpetstore HSQLDB database to describe the issue (see README for configuration).
The exception is raised as soon as the <settings> tag is added to the sql-map-config.xml (I initially thought it was for namespace settings only).
Deploying that application will display the IBATIS error in the Tomcat console. Removing the empty <settings/> tag from the config file will fix it.
Notes:
- It only shows up when using complex properties (sub-query)
- It might be a Spring-IBATIS integration issue.
> Complex Collection Properties & Statement Namespaces
> ----------------------------------------------------
>
> Key: IBATIS-33
> URL: http://nagoya.apache.org/jira/browse/IBATIS-33
> Project: iBatis for Java
> Type: Bug
> Components: SQL Maps
> Versions: 2.0.8
> Environment: Windows XP - Weblogic 8.1.4 - Oracle 8.1.7
> Spring with IBATIS 2.0.8
> Reporter: Aymeric Alibert
> Attachments: namespace.zip
>
> Complex collection properties does not seem to work when statement namespaces are enabled.
> I have a running application developped using IBATIS 2.0.8. I decided to enable statement namespaces and did the following changes:
> sql-map.config:
> <settings useStatementNamespaces="true"/>
> java class:
> public AgentAccount findAccountByAgentId(String agentId) {
> return (AgentAccount) getSqlMapClientTemplate().queryForObject("MyNameSpace.getAgentAccountById",agentId);
> }
> sqlmap.xml:
> <sqlMap namespace="MyNameSpace">
> <resultMap id="agentAccountResult" class="com.alliantenergy.csi.energyassistance.business.domain.AgentAccount">
> <result property="agentId" column="AGENT_ID"/>
> <result property="roles" column="AGENT_ID" select="MyNameSpace.getAgentRoles"/>
> </resultMap>
> <select id="getAgentAccountById" resultMap="agentAccountResult">
> select
> AGENT_ID
> from EAC_AGENT
> where AGENT_ID = #value#
> </select>
> <select id="getAgentRoles" resultClass="int">
> select ROLE_ID from EAC_AGENT_ROLE where AGENT_ID = #value#
> </select>
> Note that I am using 'MyNameSpace.getAgentRoles' for the sub query.
> IBATIS load the map fine but fails at runtime with the following exception:
> java.io.NotSerializableException: com.ibatis.sqlmap.engine.mapping.result.loader.LazyResultLoader
> java.rmi.UnmarshalException: cannot unmarshaling return; nested exception is:
> java.io.NotSerializableException: com.ibatis.sqlmap.engine.mapping.result.loader.LazyResultLoader
> at weblogic.rmi.internal.ServerRequest.unmarshalReturn(ServerRequest.java:102)
> at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:285)
> at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:244)
> at com.alliantenergy.csi.energyassistance.remote.ejb.AccountManagement_cqphao_EOImpl_813_WLStub.authenticate(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 org.springframework.remoting.rmi.RmiClientInterceptorUtils.doInvoke(RmiClientInterceptorUtils.java:103)
> at org.springframework.ejb.access.SimpleRemoteSlsbInvokerInterceptor.doInvoke(SimpleRemoteSlsbInvokerInterceptor.java:76)
> at org.springframework.ejb.access.AbstractRemoteSlsbInvokerInterceptor.invoke(AbstractRemoteSlsbInvokerInterceptor.java:78)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:143)
> at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
> at $Proxy16.authenticate(Unknown Source)
> at com.alliantenergy.csi.ui.energyassistance.presentation.agentservice.LogonAction.doExecute(LogonAction.java:88)
> at com.alliantenergy.csi.ui.energyassistance.framework.struts.BaseAction.execute(BaseAction.java:126)
> at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
> at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
> at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
> at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:996)
> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
> at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6452)
> at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
> at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
> at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3661)
> at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2630)
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
> Caused by: java.io.NotSerializableException: com.ibatis.sqlmap.engine.mapping.result.loader.LazyResultLoader
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1054)
> at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
> at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
> at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
> at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
> at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
> at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)
> at weblogic.rmi.internal.CBVOutputStream.writeObject(CBVOutputStream.java:78)
> at weblogic.rmi.internal.ServerRequest.unmarshalReturn(ServerRequest.java:94)
> ... 31 more
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://nagoya.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
http://www.atlassian.com/software/jira
[jira] Closed: (IBATIS-33) Complex Collection Properties & Statement Namespaces
Posted by "Clinton Begin (JIRA)" <ib...@incubator.apache.org>.
[ http://issues.apache.org/jira/browse/IBATIS-33?page=history ]
Clinton Begin closed IBATIS-33:
-------------------------------
Resolution: Invalid
Closed as per comments.
> Complex Collection Properties & Statement Namespaces
> ----------------------------------------------------
>
> Key: IBATIS-33
> URL: http://issues.apache.org/jira/browse/IBATIS-33
> Project: iBatis for Java
> Type: Bug
> Components: SQL Maps
> Versions: 2.0.8
> Environment: Windows XP - Weblogic 8.1.4 - Oracle 8.1.7
> Spring with IBATIS 2.0.8
> Reporter: Aymeric Alibert
> Assignee: Clinton Begin
> Priority: Minor
> Attachments: namespace.zip
>
> Complex collection properties does not seem to work when statement namespaces are enabled.
> I have a running application developped using IBATIS 2.0.8. I decided to enable statement namespaces and did the following changes:
> sql-map.config:
> <settings useStatementNamespaces="true"/>
> java class:
> public AgentAccount findAccountByAgentId(String agentId) {
> return (AgentAccount) getSqlMapClientTemplate().queryForObject("MyNameSpace.getAgentAccountById",agentId);
> }
> sqlmap.xml:
> <sqlMap namespace="MyNameSpace">
> <resultMap id="agentAccountResult" class="com.alliantenergy.csi.energyassistance.business.domain.AgentAccount">
> <result property="agentId" column="AGENT_ID"/>
> <result property="roles" column="AGENT_ID" select="MyNameSpace.getAgentRoles"/>
> </resultMap>
> <select id="getAgentAccountById" resultMap="agentAccountResult">
> select
> AGENT_ID
> from EAC_AGENT
> where AGENT_ID = #value#
> </select>
> <select id="getAgentRoles" resultClass="int">
> select ROLE_ID from EAC_AGENT_ROLE where AGENT_ID = #value#
> </select>
> Note that I am using 'MyNameSpace.getAgentRoles' for the sub query.
> IBATIS load the map fine but fails at runtime with the following exception:
> java.io.NotSerializableException: com.ibatis.sqlmap.engine.mapping.result.loader.LazyResultLoader
> java.rmi.UnmarshalException: cannot unmarshaling return; nested exception is:
> java.io.NotSerializableException: com.ibatis.sqlmap.engine.mapping.result.loader.LazyResultLoader
> at weblogic.rmi.internal.ServerRequest.unmarshalReturn(ServerRequest.java:102)
> at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:285)
> at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:244)
> at com.alliantenergy.csi.energyassistance.remote.ejb.AccountManagement_cqphao_EOImpl_813_WLStub.authenticate(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 org.springframework.remoting.rmi.RmiClientInterceptorUtils.doInvoke(RmiClientInterceptorUtils.java:103)
> at org.springframework.ejb.access.SimpleRemoteSlsbInvokerInterceptor.doInvoke(SimpleRemoteSlsbInvokerInterceptor.java:76)
> at org.springframework.ejb.access.AbstractRemoteSlsbInvokerInterceptor.invoke(AbstractRemoteSlsbInvokerInterceptor.java:78)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:143)
> at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
> at $Proxy16.authenticate(Unknown Source)
> at com.alliantenergy.csi.ui.energyassistance.presentation.agentservice.LogonAction.doExecute(LogonAction.java:88)
> at com.alliantenergy.csi.ui.energyassistance.framework.struts.BaseAction.execute(BaseAction.java:126)
> at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
> at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
> at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
> at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:996)
> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
> at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6452)
> at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
> at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
> at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3661)
> at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2630)
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
> Caused by: java.io.NotSerializableException: com.ibatis.sqlmap.engine.mapping.result.loader.LazyResultLoader
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1054)
> at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
> at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
> at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
> at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
> at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
> at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)
> at weblogic.rmi.internal.CBVOutputStream.writeObject(CBVOutputStream.java:78)
> at weblogic.rmi.internal.ServerRequest.unmarshalReturn(ServerRequest.java:94)
> ... 31 more
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
http://www.atlassian.com/software/jira
[jira] Updated: (IBATIS-33) Complex Collection Properties & Statement Namespaces
Posted by "Clinton Begin (JIRA)" <ib...@incubator.apache.org>.
[ http://issues.apache.org/jira/browse/IBATIS-33?page=history ]
Clinton Begin updated IBATIS-33:
--------------------------------
Assign To: Clinton Begin
Priority: Minor (was: Major)
> Complex Collection Properties & Statement Namespaces
> ----------------------------------------------------
>
> Key: IBATIS-33
> URL: http://issues.apache.org/jira/browse/IBATIS-33
> Project: iBatis for Java
> Type: Bug
> Components: SQL Maps
> Versions: 2.0.8
> Environment: Windows XP - Weblogic 8.1.4 - Oracle 8.1.7
> Spring with IBATIS 2.0.8
> Reporter: Aymeric Alibert
> Assignee: Clinton Begin
> Priority: Minor
> Attachments: namespace.zip
>
> Complex collection properties does not seem to work when statement namespaces are enabled.
> I have a running application developped using IBATIS 2.0.8. I decided to enable statement namespaces and did the following changes:
> sql-map.config:
> <settings useStatementNamespaces="true"/>
> java class:
> public AgentAccount findAccountByAgentId(String agentId) {
> return (AgentAccount) getSqlMapClientTemplate().queryForObject("MyNameSpace.getAgentAccountById",agentId);
> }
> sqlmap.xml:
> <sqlMap namespace="MyNameSpace">
> <resultMap id="agentAccountResult" class="com.alliantenergy.csi.energyassistance.business.domain.AgentAccount">
> <result property="agentId" column="AGENT_ID"/>
> <result property="roles" column="AGENT_ID" select="MyNameSpace.getAgentRoles"/>
> </resultMap>
> <select id="getAgentAccountById" resultMap="agentAccountResult">
> select
> AGENT_ID
> from EAC_AGENT
> where AGENT_ID = #value#
> </select>
> <select id="getAgentRoles" resultClass="int">
> select ROLE_ID from EAC_AGENT_ROLE where AGENT_ID = #value#
> </select>
> Note that I am using 'MyNameSpace.getAgentRoles' for the sub query.
> IBATIS load the map fine but fails at runtime with the following exception:
> java.io.NotSerializableException: com.ibatis.sqlmap.engine.mapping.result.loader.LazyResultLoader
> java.rmi.UnmarshalException: cannot unmarshaling return; nested exception is:
> java.io.NotSerializableException: com.ibatis.sqlmap.engine.mapping.result.loader.LazyResultLoader
> at weblogic.rmi.internal.ServerRequest.unmarshalReturn(ServerRequest.java:102)
> at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:285)
> at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:244)
> at com.alliantenergy.csi.energyassistance.remote.ejb.AccountManagement_cqphao_EOImpl_813_WLStub.authenticate(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 org.springframework.remoting.rmi.RmiClientInterceptorUtils.doInvoke(RmiClientInterceptorUtils.java:103)
> at org.springframework.ejb.access.SimpleRemoteSlsbInvokerInterceptor.doInvoke(SimpleRemoteSlsbInvokerInterceptor.java:76)
> at org.springframework.ejb.access.AbstractRemoteSlsbInvokerInterceptor.invoke(AbstractRemoteSlsbInvokerInterceptor.java:78)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:143)
> at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
> at $Proxy16.authenticate(Unknown Source)
> at com.alliantenergy.csi.ui.energyassistance.presentation.agentservice.LogonAction.doExecute(LogonAction.java:88)
> at com.alliantenergy.csi.ui.energyassistance.framework.struts.BaseAction.execute(BaseAction.java:126)
> at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
> at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
> at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
> at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:996)
> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
> at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6452)
> at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
> at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
> at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3661)
> at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2630)
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
> Caused by: java.io.NotSerializableException: com.ibatis.sqlmap.engine.mapping.result.loader.LazyResultLoader
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1054)
> at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
> at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
> at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
> at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
> at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
> at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)
> at weblogic.rmi.internal.CBVOutputStream.writeObject(CBVOutputStream.java:78)
> at weblogic.rmi.internal.ServerRequest.unmarshalReturn(ServerRequest.java:94)
> ... 31 more
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
http://www.atlassian.com/software/jira
[jira] Commented: (IBATIS-33) Complex Collection Properties & Statement Namespaces
Posted by "Clinton Begin (JIRA)" <ib...@incubator.apache.org>.
[ http://issues.apache.org/jira/browse/IBATIS-33?page=comments#action_57141 ]
Clinton Begin commented on IBATIS-33:
-------------------------------------
The exception posted has to do with remote invocation. I'm guessing, but I think that by including the <settings> element, you may be overriding some preconfiguration Spring is doing. What I recommend is that if you use the <settings> element, be sure to include lazyLoadingEnabled="false" to ensure that your objects are serializable (which they won't be if a lazy proxy is set as one of your bean properties).
I'll reduce the priority of this bug and eventually close it, unless a problem with iBATIS can be found.
Clinton
> Complex Collection Properties & Statement Namespaces
> ----------------------------------------------------
>
> Key: IBATIS-33
> URL: http://issues.apache.org/jira/browse/IBATIS-33
> Project: iBatis for Java
> Type: Bug
> Components: SQL Maps
> Versions: 2.0.8
> Environment: Windows XP - Weblogic 8.1.4 - Oracle 8.1.7
> Spring with IBATIS 2.0.8
> Reporter: Aymeric Alibert
> Attachments: namespace.zip
>
> Complex collection properties does not seem to work when statement namespaces are enabled.
> I have a running application developped using IBATIS 2.0.8. I decided to enable statement namespaces and did the following changes:
> sql-map.config:
> <settings useStatementNamespaces="true"/>
> java class:
> public AgentAccount findAccountByAgentId(String agentId) {
> return (AgentAccount) getSqlMapClientTemplate().queryForObject("MyNameSpace.getAgentAccountById",agentId);
> }
> sqlmap.xml:
> <sqlMap namespace="MyNameSpace">
> <resultMap id="agentAccountResult" class="com.alliantenergy.csi.energyassistance.business.domain.AgentAccount">
> <result property="agentId" column="AGENT_ID"/>
> <result property="roles" column="AGENT_ID" select="MyNameSpace.getAgentRoles"/>
> </resultMap>
> <select id="getAgentAccountById" resultMap="agentAccountResult">
> select
> AGENT_ID
> from EAC_AGENT
> where AGENT_ID = #value#
> </select>
> <select id="getAgentRoles" resultClass="int">
> select ROLE_ID from EAC_AGENT_ROLE where AGENT_ID = #value#
> </select>
> Note that I am using 'MyNameSpace.getAgentRoles' for the sub query.
> IBATIS load the map fine but fails at runtime with the following exception:
> java.io.NotSerializableException: com.ibatis.sqlmap.engine.mapping.result.loader.LazyResultLoader
> java.rmi.UnmarshalException: cannot unmarshaling return; nested exception is:
> java.io.NotSerializableException: com.ibatis.sqlmap.engine.mapping.result.loader.LazyResultLoader
> at weblogic.rmi.internal.ServerRequest.unmarshalReturn(ServerRequest.java:102)
> at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:285)
> at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:244)
> at com.alliantenergy.csi.energyassistance.remote.ejb.AccountManagement_cqphao_EOImpl_813_WLStub.authenticate(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 org.springframework.remoting.rmi.RmiClientInterceptorUtils.doInvoke(RmiClientInterceptorUtils.java:103)
> at org.springframework.ejb.access.SimpleRemoteSlsbInvokerInterceptor.doInvoke(SimpleRemoteSlsbInvokerInterceptor.java:76)
> at org.springframework.ejb.access.AbstractRemoteSlsbInvokerInterceptor.invoke(AbstractRemoteSlsbInvokerInterceptor.java:78)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:143)
> at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
> at $Proxy16.authenticate(Unknown Source)
> at com.alliantenergy.csi.ui.energyassistance.presentation.agentservice.LogonAction.doExecute(LogonAction.java:88)
> at com.alliantenergy.csi.ui.energyassistance.framework.struts.BaseAction.execute(BaseAction.java:126)
> at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
> at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
> at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
> at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:996)
> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
> at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6452)
> at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
> at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
> at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3661)
> at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2630)
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
> Caused by: java.io.NotSerializableException: com.ibatis.sqlmap.engine.mapping.result.loader.LazyResultLoader
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1054)
> at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
> at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
> at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
> at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
> at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
> at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)
> at weblogic.rmi.internal.CBVOutputStream.writeObject(CBVOutputStream.java:78)
> at weblogic.rmi.internal.ServerRequest.unmarshalReturn(ServerRequest.java:94)
> ... 31 more
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
http://www.atlassian.com/software/jira