You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Justin Kilimnik (JIRA)" <ji...@apache.org> on 2007/06/15 17:16:25 UTC

[jira] Created: (OPENJPA-260) Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)

Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)
------------------------------------------------------------------------------------------

                 Key: OPENJPA-260
                 URL: https://issues.apache.org/jira/browse/OPENJPA-260
             Project: OpenJPA
          Issue Type: Bug
          Components: jpa
    Affects Versions: 0.9.7
         Environment: WebSphere Platform 6.1 [BASE 6.1.0.7 cf70711.17] [WEBSERVICES 6.1.0.7 u0712.14] 
Host Operating System is Windows XP, version 5.1 build 2600 Service Pack 2
Java version = J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223ifx-20070323 (JIT enabled)
J9VM - 20070322_12058_lHdSMR
JIT  - 20070109_1805ifx3_r8
GC   - WASIFIX_2007, Java Compiler = j9jit23, Java VM name = IBM J9 VM
            Reporter: Justin Kilimnik


When adding "fetch=FetchType.EAGER" to a entity, I get a org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed. exception. This is on a persistence unit that is configured to use JTA Data Source (see config below) (running on WebSphere 6.1.0.7 with DB2 XA Driver). This works when using RESOURCE_LOCAL transaction-type (direct to DB2). The code also works if I remove the "fetch=FetchType.EAGER", therefore I presume there is a bug with the handling of managed transactions with EAGER fetching.

persistence.xml:
	<persistence-unit name="crs" transaction-type="JTA">
		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
		<jta-data-source>java:comp/env/jdbc/crsDS</jta-data-source>
		
		<class>crs.bus.entity.Customer</class>
  		<class>crs.bus.entity.Address</class>
		<class>crs.bus.entity.CustomerAddress</class>
				
		<properties>
 			<property name="openjpa.TransactionMode" value="managed" />
			<property name="openjpa.ConnectionFactoryMode" value="managed" />
			<property name="openjpa.jdbc.DBDictionary" value="db2" />
		</properties>

Entity:
@Entity
@Table(name="Customer", uniqueConstraints={@UniqueConstraint(columnNames="id")})
public class Customer implements Serializable  {
	/** .*/
	private static final long serialVersionUID = 4011736633726247664L;
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private long id;
	@Basic
	private String name;
	@OneToMany(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
	private List<CustomerAddress> addresses;
    @Basic
    private Date created = new Date();	
....
}

Exception:
Caused by: <0.9.7-incubating nonfatal general error> org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
	at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3784)
	at org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:373)
	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:260)
	at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
	at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
	at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:876)
	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:834)
	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:756)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
	at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2152)
	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:251)
	at org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
	at org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
	at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1219)
	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:987)
	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:796)
	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:766)
	at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
	at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:227)
	at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:269)
	at crs.bus.impl.query.EntityQueries.queryFromPersonName(EntityQueries.java:18)
	at crs.bus.impl.CustomerQueryBean.findByPersonName(CustomerQueryBean.java:39)
	at crs.bus.proxies.CustomerQueryProxy.findByPersonName(CustomerQueryProxy.java:15)
	at crs.service.servant.CustomerQueryServant.findByPersonName(CustomerQueryServant.java:26)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:615)
	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeMethod(JavaDispatcher.java:178)
	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeOperation(JavaDispatcher.java:141)
	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processRequestResponse(SoapRPCProcessor.java:448)
	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processMessage(SoapRPCProcessor.java:413)
	at com.ibm.ws.webservices.engine.dispatchers.BasicDispatcher.processMessage(BasicDispatcher.java:134)
	at com.ibm.ws.webservices.engine.dispatchers.java.SessionDispatcher.invoke(SessionDispatcher.java:204)
	... 31 more
Caused by: com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
	at com.ibm.db2.jcc.c.wf.mb(wf.java:3193)
	at com.ibm.db2.jcc.c.wf.j(wf.java:3164)
	at com.ibm.db2.jcc.c.wf.getTimestamp(wf.java:750)
	at com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getTimestamp(WSJdbcResultSet.java:1994)
	at org.apache.openjpa.lib.jdbc.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:166)
	at org.apache.openjpa.jdbc.sql.DBDictionary.getTimestamp(DBDictionary.java:727)
	at org.apache.openjpa.jdbc.sql.DBDictionary.getDate(DBDictionary.java:594)
	at org.apache.openjpa.jdbc.sql.ResultSetResult.getDateInternal(ResultSetResult.java:303)
	at org.apache.openjpa.jdbc.sql.ResultSetResult.getObjectInternal(ResultSetResult.java:384)
	at org.apache.openjpa.jdbc.sql.AbstractResult.getObject(AbstractResult.java:662)
	at org.apache.openjpa.jdbc.meta.strats.HandlerStrategies.loadDataStore(HandlerStrategies.java:205)
	at org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy.load(HandlerFieldStrategy.java:172)
	at org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:788)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:833)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:785)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:336)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
	... 63 more




-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Re: [jira] Commented: (OPENJPA-260) Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)

Posted by Pinaki Poddar <pp...@apache.org>.
According to this report, the observation varies on transaction type being
JTA vs RESOURCE_LOCAL.
Given the nature of error, one of the possible reasons is the different
scope of the persistence context being used in the two different transaction
types. 
Can you please post the code that calls customer.getAddresses() -- guessing
that is where you see this failure -- and the transaction demarcation code,
if any, around that? 
 

JIRA jira@apache.org wrote:
> 
> 
>     [
> https://issues.apache.org/jira/browse/OPENJPA-260?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12611195#action_12611195
> ] 
> 
> Bogdan Stroe commented on OPENJPA-260:
> --------------------------------------
> 
> Any progress on this issue? I have the same problem in my current project.
> 
>> Using FetchType.EAGER on OneToMany using jta data source causes result
>> set is closed (DB2)
>> ------------------------------------------------------------------------------------------
>>
>>                 Key: OPENJPA-260
>>                 URL: https://issues.apache.org/jira/browse/OPENJPA-260
>>             Project: OpenJPA
>>          Issue Type: Bug
>>          Components: jpa
>>    Affects Versions: 0.9.7
>>         Environment: WebSphere Platform 6.1 [BASE 6.1.0.7 cf70711.17]
>> [WEBSERVICES 6.1.0.7 u0712.14] 
>> Host Operating System is Windows XP, version 5.1 build 2600 Service Pack
>> 2
>> Java version = J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32
>> j9vmwi3223ifx-20070323 (JIT enabled)
>> J9VM - 20070322_12058_lHdSMR
>> JIT  - 20070109_1805ifx3_r8
>> GC   - WASIFIX_2007, Java Compiler = j9jit23, Java VM name = IBM J9 VM
>>            Reporter: Justin Kilimnik
>>            Priority: Minor
>>         Attachments: log.txt
>>
>>
>> When adding "fetch=FetchType.EAGER" to a OneToMany field on an entity, I
>> get a org.apache.openjpa.persistence.PersistenceException:
>> [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
>> exception. This is on a persistence unit that is configured to use JTA
>> Data Source (see config below) (running on WebSphere 6.1.0.7 with DB2 XA
>> Driver). This works when using RESOURCE_LOCAL transaction-type (direct to
>> DB2). The code also works if I remove the "fetch=FetchType.EAGER",
>> therefore I presume there is a bug with the handling of managed
>> transactions with EAGER fetching.
>> The work around was to add the eager fetching to the query (i.e. "join
>> fetch x.addresses") but I would think that this should work and might
>> need looking in.
>> persistence.xml:
>> 	<persistence-unit name="crs" transaction-type="JTA">
>> 	
>> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
>> 		<jta-data-source>java:comp/env/jdbc/crsDS</jta-data-source>
>> 		
>> 		<class>crs.bus.entity.Customer</class>
>>   		<class>crs.bus.entity.Address</class>
>> 		<class>crs.bus.entity.CustomerAddress</class>
>> 				
>> 		<properties>
>>  			<property name="openjpa.TransactionMode" value="managed" />
>> 			<property name="openjpa.ConnectionFactoryMode" value="managed" />
>> 			<property name="openjpa.jdbc.DBDictionary" value="db2" />
>> 		</properties>
>> Entity:
>> @Entity
>> @Table(name="Customer",
>> uniqueConstraints={@UniqueConstraint(columnNames="id")})
>> public class Customer implements Serializable  {
>> 	/** .*/
>> 	private static final long serialVersionUID = 4011736633726247664L;
>> 	@Id
>> 	@GeneratedValue(strategy=GenerationType.IDENTITY)
>> 	private long id;
>> 	@Basic
>> 	private String name;
>> 	@OneToMany(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
>> 	private List<CustomerAddress> addresses;
>>     @Basic
>>     private Date created = new Date();	
>> ....
>> }
>> Exception:
>> Caused by: <0.9.7-incubating nonfatal general error>
>> org.apache.openjpa.persistence.PersistenceException:
>> [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
>> 	at
>> org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3784)
>> 	at
>> org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:373)
>> 	at
>> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
>> 	at
>> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
>> 	at
>> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
>> 	at
>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:260)
>> 	at
>> org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
>> 	at
>> org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
>> 	at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:876)
>> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:834)
>> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:756)
>> 	at
>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
>> 	at
>> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
>> 	at
>> org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2152)
>> 	at
>> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:251)
>> 	at
>> org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
>> 	at
>> org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
>> 	at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1219)
>> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:987)
>> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:796)
>> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:766)
>> 	at
>> org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
>> 	at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:227)
>> 	at
>> org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:269)
>> 	at
>> crs.bus.impl.query.EntityQueries.queryFromPersonName(EntityQueries.java:18)
>> 	at
>> crs.bus.impl.CustomerQueryBean.findByPersonName(CustomerQueryBean.java:39)
>> 	at
>> crs.bus.proxies.CustomerQueryProxy.findByPersonName(CustomerQueryProxy.java:15)
>> 	at
>> crs.service.servant.CustomerQueryServant.findByPersonName(CustomerQueryServant.java:26)
>> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> 	at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
>> 	at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> 	at java.lang.reflect.Method.invoke(Method.java:615)
>> 	at
>> com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeMethod(JavaDispatcher.java:178)
>> 	at
>> com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeOperation(JavaDispatcher.java:141)
>> 	at
>> com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processRequestResponse(SoapRPCProcessor.java:448)
>> 	at
>> com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processMessage(SoapRPCProcessor.java:413)
>> 	at
>> com.ibm.ws.webservices.engine.dispatchers.BasicDispatcher.processMessage(BasicDispatcher.java:134)
>> 	at
>> com.ibm.ws.webservices.engine.dispatchers.java.SessionDispatcher.invoke(SessionDispatcher.java:204)
>> 	... 31 more
>> Caused by: com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10120][10898]
>> Invalid operation: result set is closed.
>> 	at com.ibm.db2.jcc.c.wf.mb(wf.java:3193)
>> 	at com.ibm.db2.jcc.c.wf.j(wf.java:3164)
>> 	at com.ibm.db2.jcc.c.wf.getTimestamp(wf.java:750)
>> 	at
>> com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getTimestamp(WSJdbcResultSet.java:1994)
>> 	at
>> org.apache.openjpa.lib.jdbc.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:166)
>> 	at
>> org.apache.openjpa.jdbc.sql.DBDictionary.getTimestamp(DBDictionary.java:727)
>> 	at
>> org.apache.openjpa.jdbc.sql.DBDictionary.getDate(DBDictionary.java:594)
>> 	at
>> org.apache.openjpa.jdbc.sql.ResultSetResult.getDateInternal(ResultSetResult.java:303)
>> 	at
>> org.apache.openjpa.jdbc.sql.ResultSetResult.getObjectInternal(ResultSetResult.java:384)
>> 	at
>> org.apache.openjpa.jdbc.sql.AbstractResult.getObject(AbstractResult.java:662)
>> 	at
>> org.apache.openjpa.jdbc.meta.strats.HandlerStrategies.loadDataStore(HandlerStrategies.java:205)
>> 	at
>> org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy.load(HandlerFieldStrategy.java:172)
>> 	at org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:788)
>> 	at
>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:833)
>> 	at
>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:785)
>> 	at
>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:336)
>> 	at
>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
>> 	... 63 more
> 
> -- 
> This message is automatically generated by JIRA.
> -
> You can reply to this email to add a comment to the issue online.
> 
> 
> 

-- 
View this message in context: http://n2.nabble.com/-jira--Created%3A-%28OPENJPA-260%29-Using-FetchType.EAGER-on-OneToMany-using-jta-data-source-causes-result-set-is-closed-%28DB2%29-tp214413p363264.html
Sent from the OpenJPA Developers mailing list archive at Nabble.com.


Re: [jira] Commented: (OPENJPA-260) Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)

Posted by Pinaki Poddar <pp...@apache.org>.
> So the method will be executed in a transaction. 
Yes. I am guessing from the reported symptoms that customer.getAddresses()
has been invoked *after* the persistence context has gone out of scope.
However, with eager fetching, OpenJPA should have fetched list of Address
with the Customer instance before the control being returned to the caller.  




JIRA jira@apache.org wrote:
> 
> 
>     [
> https://issues.apache.org/jira/browse/OPENJPA-260?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12611204#action_12611204
> ] 
> 
> Bogdan Stroe commented on OPENJPA-260:
> --------------------------------------
> 
> The work-around we found for the time being is to remove the annotation:
> @TransactionAttribute(value=TransactionAttributeType.NOT_SUPPORTED) from
> the method calling the DAO that leads to this error.
> So the method will be executed in a transaction.
> We are using WebSphere 6.1.0 with DB2 XA Driver.
> If I execute the same code out of container (in unit tests) it works fine.
> 
>> Using FetchType.EAGER on OneToMany using jta data source causes result
>> set is closed (DB2)
>> ------------------------------------------------------------------------------------------
>>
>>                 Key: OPENJPA-260
>>                 URL: https://issues.apache.org/jira/browse/OPENJPA-260
>>             Project: OpenJPA
>>          Issue Type: Bug
>>          Components: jpa
>>    Affects Versions: 0.9.7
>>         Environment: WebSphere Platform 6.1 [BASE 6.1.0.7 cf70711.17]
>> [WEBSERVICES 6.1.0.7 u0712.14] 
>> Host Operating System is Windows XP, version 5.1 build 2600 Service Pack
>> 2
>> Java version = J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32
>> j9vmwi3223ifx-20070323 (JIT enabled)
>> J9VM - 20070322_12058_lHdSMR
>> JIT  - 20070109_1805ifx3_r8
>> GC   - WASIFIX_2007, Java Compiler = j9jit23, Java VM name = IBM J9 VM
>>            Reporter: Justin Kilimnik
>>            Priority: Minor
>>         Attachments: log.txt
>>
>>
>> When adding "fetch=FetchType.EAGER" to a OneToMany field on an entity, I
>> get a org.apache.openjpa.persistence.PersistenceException:
>> [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
>> exception. This is on a persistence unit that is configured to use JTA
>> Data Source (see config below) (running on WebSphere 6.1.0.7 with DB2 XA
>> Driver). This works when using RESOURCE_LOCAL transaction-type (direct to
>> DB2). The code also works if I remove the "fetch=FetchType.EAGER",
>> therefore I presume there is a bug with the handling of managed
>> transactions with EAGER fetching.
>> The work around was to add the eager fetching to the query (i.e. "join
>> fetch x.addresses") but I would think that this should work and might
>> need looking in.
>> persistence.xml:
>> 	<persistence-unit name="crs" transaction-type="JTA">
>> 	
>> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
>> 		<jta-data-source>java:comp/env/jdbc/crsDS</jta-data-source>
>> 		
>> 		<class>crs.bus.entity.Customer</class>
>>   		<class>crs.bus.entity.Address</class>
>> 		<class>crs.bus.entity.CustomerAddress</class>
>> 				
>> 		<properties>
>>  			<property name="openjpa.TransactionMode" value="managed" />
>> 			<property name="openjpa.ConnectionFactoryMode" value="managed" />
>> 			<property name="openjpa.jdbc.DBDictionary" value="db2" />
>> 		</properties>
>> Entity:
>> @Entity
>> @Table(name="Customer",
>> uniqueConstraints={@UniqueConstraint(columnNames="id")})
>> public class Customer implements Serializable  {
>> 	/** .*/
>> 	private static final long serialVersionUID = 4011736633726247664L;
>> 	@Id
>> 	@GeneratedValue(strategy=GenerationType.IDENTITY)
>> 	private long id;
>> 	@Basic
>> 	private String name;
>> 	@OneToMany(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
>> 	private List<CustomerAddress> addresses;
>>     @Basic
>>     private Date created = new Date();	
>> ....
>> }
>> Exception:
>> Caused by: <0.9.7-incubating nonfatal general error>
>> org.apache.openjpa.persistence.PersistenceException:
>> [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
>> 	at
>> org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3784)
>> 	at
>> org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:373)
>> 	at
>> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
>> 	at
>> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
>> 	at
>> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
>> 	at
>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:260)
>> 	at
>> org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
>> 	at
>> org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
>> 	at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:876)
>> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:834)
>> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:756)
>> 	at
>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
>> 	at
>> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
>> 	at
>> org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2152)
>> 	at
>> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:251)
>> 	at
>> org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
>> 	at
>> org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
>> 	at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1219)
>> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:987)
>> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:796)
>> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:766)
>> 	at
>> org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
>> 	at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:227)
>> 	at
>> org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:269)
>> 	at
>> crs.bus.impl.query.EntityQueries.queryFromPersonName(EntityQueries.java:18)
>> 	at
>> crs.bus.impl.CustomerQueryBean.findByPersonName(CustomerQueryBean.java:39)
>> 	at
>> crs.bus.proxies.CustomerQueryProxy.findByPersonName(CustomerQueryProxy.java:15)
>> 	at
>> crs.service.servant.CustomerQueryServant.findByPersonName(CustomerQueryServant.java:26)
>> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> 	at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
>> 	at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> 	at java.lang.reflect.Method.invoke(Method.java:615)
>> 	at
>> com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeMethod(JavaDispatcher.java:178)
>> 	at
>> com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeOperation(JavaDispatcher.java:141)
>> 	at
>> com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processRequestResponse(SoapRPCProcessor.java:448)
>> 	at
>> com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processMessage(SoapRPCProcessor.java:413)
>> 	at
>> com.ibm.ws.webservices.engine.dispatchers.BasicDispatcher.processMessage(BasicDispatcher.java:134)
>> 	at
>> com.ibm.ws.webservices.engine.dispatchers.java.SessionDispatcher.invoke(SessionDispatcher.java:204)
>> 	... 31 more
>> Caused by: com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10120][10898]
>> Invalid operation: result set is closed.
>> 	at com.ibm.db2.jcc.c.wf.mb(wf.java:3193)
>> 	at com.ibm.db2.jcc.c.wf.j(wf.java:3164)
>> 	at com.ibm.db2.jcc.c.wf.getTimestamp(wf.java:750)
>> 	at
>> com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getTimestamp(WSJdbcResultSet.java:1994)
>> 	at
>> org.apache.openjpa.lib.jdbc.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:166)
>> 	at
>> org.apache.openjpa.jdbc.sql.DBDictionary.getTimestamp(DBDictionary.java:727)
>> 	at
>> org.apache.openjpa.jdbc.sql.DBDictionary.getDate(DBDictionary.java:594)
>> 	at
>> org.apache.openjpa.jdbc.sql.ResultSetResult.getDateInternal(ResultSetResult.java:303)
>> 	at
>> org.apache.openjpa.jdbc.sql.ResultSetResult.getObjectInternal(ResultSetResult.java:384)
>> 	at
>> org.apache.openjpa.jdbc.sql.AbstractResult.getObject(AbstractResult.java:662)
>> 	at
>> org.apache.openjpa.jdbc.meta.strats.HandlerStrategies.loadDataStore(HandlerStrategies.java:205)
>> 	at
>> org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy.load(HandlerFieldStrategy.java:172)
>> 	at org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:788)
>> 	at
>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:833)
>> 	at
>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:785)
>> 	at
>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:336)
>> 	at
>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
>> 	... 63 more
> 
> -- 
> This message is automatically generated by JIRA.
> -
> You can reply to this email to add a comment to the issue online.
> 
> 
> 

-- 
View this message in context: http://n2.nabble.com/-jira--Created%3A-%28OPENJPA-260%29-Using-FetchType.EAGER-on-OneToMany-using-jta-data-source-causes-result-set-is-closed-%28DB2%29-tp214413p363282.html
Sent from the OpenJPA Developers mailing list archive at Nabble.com.


[jira] Updated: (OPENJPA-260) Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)

Posted by "Justin Kilimnik (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OPENJPA-260?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Justin Kilimnik updated OPENJPA-260:
------------------------------------

       Priority: Minor  (was: Major)
    Description: 
When adding "fetch=FetchType.EAGER" to a OneToMany field on an entity, I get a org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed. exception. This is on a persistence unit that is configured to use JTA Data Source (see config below) (running on WebSphere 6.1.0.7 with DB2 XA Driver). This works when using RESOURCE_LOCAL transaction-type (direct to DB2). The code also works if I remove the "fetch=FetchType.EAGER", therefore I presume there is a bug with the handling of managed transactions with EAGER fetching.

The work around was to add the eager fetching to the query (i.e. "join fetch x.addresses") but I would think that this should work and might need looking in.

persistence.xml:
	<persistence-unit name="crs" transaction-type="JTA">
		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
		<jta-data-source>java:comp/env/jdbc/crsDS</jta-data-source>
		
		<class>crs.bus.entity.Customer</class>
  		<class>crs.bus.entity.Address</class>
		<class>crs.bus.entity.CustomerAddress</class>
				
		<properties>
 			<property name="openjpa.TransactionMode" value="managed" />
			<property name="openjpa.ConnectionFactoryMode" value="managed" />
			<property name="openjpa.jdbc.DBDictionary" value="db2" />
		</properties>

Entity:
@Entity
@Table(name="Customer", uniqueConstraints={@UniqueConstraint(columnNames="id")})
public class Customer implements Serializable  {
	/** .*/
	private static final long serialVersionUID = 4011736633726247664L;
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private long id;
	@Basic
	private String name;
	@OneToMany(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
	private List<CustomerAddress> addresses;
    @Basic
    private Date created = new Date();	
....
}

Exception:
Caused by: <0.9.7-incubating nonfatal general error> org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
	at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3784)
	at org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:373)
	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:260)
	at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
	at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
	at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:876)
	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:834)
	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:756)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
	at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2152)
	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:251)
	at org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
	at org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
	at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1219)
	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:987)
	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:796)
	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:766)
	at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
	at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:227)
	at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:269)
	at crs.bus.impl.query.EntityQueries.queryFromPersonName(EntityQueries.java:18)
	at crs.bus.impl.CustomerQueryBean.findByPersonName(CustomerQueryBean.java:39)
	at crs.bus.proxies.CustomerQueryProxy.findByPersonName(CustomerQueryProxy.java:15)
	at crs.service.servant.CustomerQueryServant.findByPersonName(CustomerQueryServant.java:26)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:615)
	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeMethod(JavaDispatcher.java:178)
	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeOperation(JavaDispatcher.java:141)
	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processRequestResponse(SoapRPCProcessor.java:448)
	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processMessage(SoapRPCProcessor.java:413)
	at com.ibm.ws.webservices.engine.dispatchers.BasicDispatcher.processMessage(BasicDispatcher.java:134)
	at com.ibm.ws.webservices.engine.dispatchers.java.SessionDispatcher.invoke(SessionDispatcher.java:204)
	... 31 more
Caused by: com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
	at com.ibm.db2.jcc.c.wf.mb(wf.java:3193)
	at com.ibm.db2.jcc.c.wf.j(wf.java:3164)
	at com.ibm.db2.jcc.c.wf.getTimestamp(wf.java:750)
	at com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getTimestamp(WSJdbcResultSet.java:1994)
	at org.apache.openjpa.lib.jdbc.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:166)
	at org.apache.openjpa.jdbc.sql.DBDictionary.getTimestamp(DBDictionary.java:727)
	at org.apache.openjpa.jdbc.sql.DBDictionary.getDate(DBDictionary.java:594)
	at org.apache.openjpa.jdbc.sql.ResultSetResult.getDateInternal(ResultSetResult.java:303)
	at org.apache.openjpa.jdbc.sql.ResultSetResult.getObjectInternal(ResultSetResult.java:384)
	at org.apache.openjpa.jdbc.sql.AbstractResult.getObject(AbstractResult.java:662)
	at org.apache.openjpa.jdbc.meta.strats.HandlerStrategies.loadDataStore(HandlerStrategies.java:205)
	at org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy.load(HandlerFieldStrategy.java:172)
	at org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:788)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:833)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:785)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:336)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
	... 63 more




  was:
When adding "fetch=FetchType.EAGER" to a OneToMany field on an entity, I get a org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed. exception. This is on a persistence unit that is configured to use JTA Data Source (see config below) (running on WebSphere 6.1.0.7 with DB2 XA Driver). This works when using RESOURCE_LOCAL transaction-type (direct to DB2). The code also works if I remove the "fetch=FetchType.EAGER", therefore I presume there is a bug with the handling of managed transactions with EAGER fetching.

persistence.xml:
	<persistence-unit name="crs" transaction-type="JTA">
		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
		<jta-data-source>java:comp/env/jdbc/crsDS</jta-data-source>
		
		<class>crs.bus.entity.Customer</class>
  		<class>crs.bus.entity.Address</class>
		<class>crs.bus.entity.CustomerAddress</class>
				
		<properties>
 			<property name="openjpa.TransactionMode" value="managed" />
			<property name="openjpa.ConnectionFactoryMode" value="managed" />
			<property name="openjpa.jdbc.DBDictionary" value="db2" />
		</properties>

Entity:
@Entity
@Table(name="Customer", uniqueConstraints={@UniqueConstraint(columnNames="id")})
public class Customer implements Serializable  {
	/** .*/
	private static final long serialVersionUID = 4011736633726247664L;
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private long id;
	@Basic
	private String name;
	@OneToMany(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
	private List<CustomerAddress> addresses;
    @Basic
    private Date created = new Date();	
....
}

Exception:
Caused by: <0.9.7-incubating nonfatal general error> org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
	at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3784)
	at org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:373)
	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:260)
	at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
	at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
	at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:876)
	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:834)
	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:756)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
	at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2152)
	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:251)
	at org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
	at org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
	at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1219)
	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:987)
	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:796)
	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:766)
	at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
	at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:227)
	at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:269)
	at crs.bus.impl.query.EntityQueries.queryFromPersonName(EntityQueries.java:18)
	at crs.bus.impl.CustomerQueryBean.findByPersonName(CustomerQueryBean.java:39)
	at crs.bus.proxies.CustomerQueryProxy.findByPersonName(CustomerQueryProxy.java:15)
	at crs.service.servant.CustomerQueryServant.findByPersonName(CustomerQueryServant.java:26)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:615)
	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeMethod(JavaDispatcher.java:178)
	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeOperation(JavaDispatcher.java:141)
	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processRequestResponse(SoapRPCProcessor.java:448)
	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processMessage(SoapRPCProcessor.java:413)
	at com.ibm.ws.webservices.engine.dispatchers.BasicDispatcher.processMessage(BasicDispatcher.java:134)
	at com.ibm.ws.webservices.engine.dispatchers.java.SessionDispatcher.invoke(SessionDispatcher.java:204)
	... 31 more
Caused by: com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
	at com.ibm.db2.jcc.c.wf.mb(wf.java:3193)
	at com.ibm.db2.jcc.c.wf.j(wf.java:3164)
	at com.ibm.db2.jcc.c.wf.getTimestamp(wf.java:750)
	at com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getTimestamp(WSJdbcResultSet.java:1994)
	at org.apache.openjpa.lib.jdbc.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:166)
	at org.apache.openjpa.jdbc.sql.DBDictionary.getTimestamp(DBDictionary.java:727)
	at org.apache.openjpa.jdbc.sql.DBDictionary.getDate(DBDictionary.java:594)
	at org.apache.openjpa.jdbc.sql.ResultSetResult.getDateInternal(ResultSetResult.java:303)
	at org.apache.openjpa.jdbc.sql.ResultSetResult.getObjectInternal(ResultSetResult.java:384)
	at org.apache.openjpa.jdbc.sql.AbstractResult.getObject(AbstractResult.java:662)
	at org.apache.openjpa.jdbc.meta.strats.HandlerStrategies.loadDataStore(HandlerStrategies.java:205)
	at org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy.load(HandlerFieldStrategy.java:172)
	at org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:788)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:833)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:785)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:336)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
	... 63 more





> Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)
> ------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-260
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-260
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jpa
>    Affects Versions: 0.9.7
>         Environment: WebSphere Platform 6.1 [BASE 6.1.0.7 cf70711.17] [WEBSERVICES 6.1.0.7 u0712.14] 
> Host Operating System is Windows XP, version 5.1 build 2600 Service Pack 2
> Java version = J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223ifx-20070323 (JIT enabled)
> J9VM - 20070322_12058_lHdSMR
> JIT  - 20070109_1805ifx3_r8
> GC   - WASIFIX_2007, Java Compiler = j9jit23, Java VM name = IBM J9 VM
>            Reporter: Justin Kilimnik
>            Priority: Minor
>
> When adding "fetch=FetchType.EAGER" to a OneToMany field on an entity, I get a org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed. exception. This is on a persistence unit that is configured to use JTA Data Source (see config below) (running on WebSphere 6.1.0.7 with DB2 XA Driver). This works when using RESOURCE_LOCAL transaction-type (direct to DB2). The code also works if I remove the "fetch=FetchType.EAGER", therefore I presume there is a bug with the handling of managed transactions with EAGER fetching.
> The work around was to add the eager fetching to the query (i.e. "join fetch x.addresses") but I would think that this should work and might need looking in.
> persistence.xml:
> 	<persistence-unit name="crs" transaction-type="JTA">
> 		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> 		<jta-data-source>java:comp/env/jdbc/crsDS</jta-data-source>
> 		
> 		<class>crs.bus.entity.Customer</class>
>   		<class>crs.bus.entity.Address</class>
> 		<class>crs.bus.entity.CustomerAddress</class>
> 				
> 		<properties>
>  			<property name="openjpa.TransactionMode" value="managed" />
> 			<property name="openjpa.ConnectionFactoryMode" value="managed" />
> 			<property name="openjpa.jdbc.DBDictionary" value="db2" />
> 		</properties>
> Entity:
> @Entity
> @Table(name="Customer", uniqueConstraints={@UniqueConstraint(columnNames="id")})
> public class Customer implements Serializable  {
> 	/** .*/
> 	private static final long serialVersionUID = 4011736633726247664L;
> 	@Id
> 	@GeneratedValue(strategy=GenerationType.IDENTITY)
> 	private long id;
> 	@Basic
> 	private String name;
> 	@OneToMany(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
> 	private List<CustomerAddress> addresses;
>     @Basic
>     private Date created = new Date();	
> ....
> }
> Exception:
> Caused by: <0.9.7-incubating nonfatal general error> org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3784)
> 	at org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:373)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:260)
> 	at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
> 	at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
> 	at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:876)
> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:834)
> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:756)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
> 	at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2152)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:251)
> 	at org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
> 	at org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
> 	at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1219)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:987)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:796)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:766)
> 	at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
> 	at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:227)
> 	at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:269)
> 	at crs.bus.impl.query.EntityQueries.queryFromPersonName(EntityQueries.java:18)
> 	at crs.bus.impl.CustomerQueryBean.findByPersonName(CustomerQueryBean.java:39)
> 	at crs.bus.proxies.CustomerQueryProxy.findByPersonName(CustomerQueryProxy.java:15)
> 	at crs.service.servant.CustomerQueryServant.findByPersonName(CustomerQueryServant.java:26)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:615)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeMethod(JavaDispatcher.java:178)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeOperation(JavaDispatcher.java:141)
> 	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processRequestResponse(SoapRPCProcessor.java:448)
> 	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processMessage(SoapRPCProcessor.java:413)
> 	at com.ibm.ws.webservices.engine.dispatchers.BasicDispatcher.processMessage(BasicDispatcher.java:134)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.SessionDispatcher.invoke(SessionDispatcher.java:204)
> 	... 31 more
> Caused by: com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
> 	at com.ibm.db2.jcc.c.wf.mb(wf.java:3193)
> 	at com.ibm.db2.jcc.c.wf.j(wf.java:3164)
> 	at com.ibm.db2.jcc.c.wf.getTimestamp(wf.java:750)
> 	at com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getTimestamp(WSJdbcResultSet.java:1994)
> 	at org.apache.openjpa.lib.jdbc.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:166)
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.getTimestamp(DBDictionary.java:727)
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.getDate(DBDictionary.java:594)
> 	at org.apache.openjpa.jdbc.sql.ResultSetResult.getDateInternal(ResultSetResult.java:303)
> 	at org.apache.openjpa.jdbc.sql.ResultSetResult.getObjectInternal(ResultSetResult.java:384)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.getObject(AbstractResult.java:662)
> 	at org.apache.openjpa.jdbc.meta.strats.HandlerStrategies.loadDataStore(HandlerStrategies.java:205)
> 	at org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy.load(HandlerFieldStrategy.java:172)
> 	at org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:788)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:833)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:785)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:336)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
> 	... 63 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Issue Comment Edited: (OPENJPA-260) Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)

Posted by "Justin Kilimnik (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/OPENJPA-260?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12505804 ] 

Justin Kilimnik edited comment on OPENJPA-260 at 6/18/07 6:00 AM:
------------------------------------------------------------------

Here is the condensed log:

[18/06/07 13:55:41:703 BST] 0000001f SystemErr     R 2766  crs  TRACE  [WebContainer : 0] openjpa.jdbc.SQL - <t 384046820, conn 745155690> executing prepstmnt 593765220 SELECT t0.id, t0.created, t0.name FROM Customer t0 WHERE (t0.name LIKE ? ESCAPE '\')  [params=(String) Brad%]
[18/06/07 13:55:42:343 BST] 0000001f SystemErr     R 3406  crs  TRACE  [WebContainer : 0] openjpa.jdbc.SQL - <t 384046820, conn 745155690> [640 ms] spent
[18/06/07 13:55:42:359 BST] 0000001f SystemErr     R 3422  crs  TRACE  [WebContainer : 0] openjpa.jdbc.SQL - <t 384046820, conn 745155690> executing prepstmnt 16646398 SELECT t0.id, t2.cid, t3.id, t3.city, t3.country, t3.flatNumber, t3.houseName, t3.number, t3.postcode, t3.streetName, t2.name FROM Customer t0 INNER JOIN Customer_CustomerAddress t1 ON t0.id = t1.Customer_id INNER JOIN CustomerAddress t2 ON t1.addresses_cid = t2.cid LEFT OUTER JOIN Address t3 ON t2.address_id = t3.id WHERE (t0.name LIKE ? ESCAPE '\') ORDER BY t0.id ASC  [params=(String) Brad%]
[18/06/07 13:55:42:359 BST] 0000001f SystemErr     R 3422  crs  TRACE  [WebContainer : 0] openjpa.jdbc.SQL - <t 384046820, conn 745155690> [0 ms] spent
[18/06/07 13:55:42:468 BST] 0000001f ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl initialize FFDC0009I: FFDC opened incident stream file C:\Program Files\IBM\SDP70\runtimes\base_v61\profiles\AppSrvWS01\logs\ffdc\server1_16e416e4_07.06.18_13.55.42_0.txt
[18/06/07 13:55:42:531 BST] 0000001f ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl resetIncidentStream FFDC0010I: FFDC closed incident stream file C:\Program Files\IBM\SDP70\runtimes\base_v61\profiles\AppSrvWS01\logs\ffdc\server1_16e416e4_07.06.18_13.55.42_0.txt
[18/06/07 13:55:42:578 BST] 0000001f SystemErr     R <0.9.7-incubating nonfatal general error> org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.

I will attach the complete log. 

I didn't use any specific features (ie. fetch plans).

The code was:

...
	@OneToMany(cascade={CascadeType.ALL},fetch=FetchType.EAGER)
	private List<CustomerAddress> addresses;
...

Regards, Justin


 was:
Here is the condensed log:

[18/06/07 13:55:41:703 BST] 0000001f SystemErr     R 2766  crs  TRACE  [WebContainer : 0] openjpa.jdbc.SQL - <t 384046820, conn 745155690> executing prepstmnt 593765220 SELECT t0.id, t0.created, t0.name FROM Customer t0 WHERE (t0.name LIKE ? ESCAPE '\')  [params=(String) Brad%]
[18/06/07 13:55:42:343 BST] 0000001f SystemErr     R 3406  crs  TRACE  [WebContainer : 0] openjpa.jdbc.SQL - <t 384046820, conn 745155690> [640 ms] spent
[18/06/07 13:55:42:359 BST] 0000001f SystemErr     R 3422  crs  TRACE  [WebContainer : 0] openjpa.jdbc.SQL - <t 384046820, conn 745155690> executing prepstmnt 16646398 SELECT t0.id, t2.cid, t3.id, t3.city, t3.country, t3.flatNumber, t3.houseName, t3.number, t3.postcode, t3.streetName, t2.name FROM Customer t0 INNER JOIN Customer_CustomerAddress t1 ON t0.id = t1.Customer_id INNER JOIN CustomerAddress t2 ON t1.addresses_cid = t2.cid LEFT OUTER JOIN Address t3 ON t2.address_id = t3.id WHERE (t0.name LIKE ? ESCAPE '\') ORDER BY t0.id ASC  [params=(String) Brad%]
[18/06/07 13:55:42:359 BST] 0000001f SystemErr     R 3422  crs  TRACE  [WebContainer : 0] openjpa.jdbc.SQL - <t 384046820, conn 745155690> [0 ms] spent
[18/06/07 13:55:42:468 BST] 0000001f ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl initialize FFDC0009I: FFDC opened incident stream file C:\Program Files\IBM\SDP70\runtimes\base_v61\profiles\AppSrvWS01\logs\ffdc\server1_16e416e4_07.06.18_13.55.42_0.txt
[18/06/07 13:55:42:531 BST] 0000001f ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl resetIncidentStream FFDC0010I: FFDC closed incident stream file C:\Program Files\IBM\SDP70\runtimes\base_v61\profiles\AppSrvWS01\logs\ffdc\server1_16e416e4_07.06.18_13.55.42_0.txt
[18/06/07 13:55:42:578 BST] 0000001f SystemErr     R <0.9.7-incubating nonfatal general error> org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.

I will attach the complete log. 

I didn't use any specific features (ie. fetch plans).

Regards, Justin

> Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)
> ------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-260
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-260
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jpa
>    Affects Versions: 0.9.7
>         Environment: WebSphere Platform 6.1 [BASE 6.1.0.7 cf70711.17] [WEBSERVICES 6.1.0.7 u0712.14] 
> Host Operating System is Windows XP, version 5.1 build 2600 Service Pack 2
> Java version = J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223ifx-20070323 (JIT enabled)
> J9VM - 20070322_12058_lHdSMR
> JIT  - 20070109_1805ifx3_r8
> GC   - WASIFIX_2007, Java Compiler = j9jit23, Java VM name = IBM J9 VM
>            Reporter: Justin Kilimnik
>            Priority: Minor
>         Attachments: log.txt
>
>
> When adding "fetch=FetchType.EAGER" to a OneToMany field on an entity, I get a org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed. exception. This is on a persistence unit that is configured to use JTA Data Source (see config below) (running on WebSphere 6.1.0.7 with DB2 XA Driver). This works when using RESOURCE_LOCAL transaction-type (direct to DB2). The code also works if I remove the "fetch=FetchType.EAGER", therefore I presume there is a bug with the handling of managed transactions with EAGER fetching.
> The work around was to add the eager fetching to the query (i.e. "join fetch x.addresses") but I would think that this should work and might need looking in.
> persistence.xml:
> 	<persistence-unit name="crs" transaction-type="JTA">
> 		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> 		<jta-data-source>java:comp/env/jdbc/crsDS</jta-data-source>
> 		
> 		<class>crs.bus.entity.Customer</class>
>   		<class>crs.bus.entity.Address</class>
> 		<class>crs.bus.entity.CustomerAddress</class>
> 				
> 		<properties>
>  			<property name="openjpa.TransactionMode" value="managed" />
> 			<property name="openjpa.ConnectionFactoryMode" value="managed" />
> 			<property name="openjpa.jdbc.DBDictionary" value="db2" />
> 		</properties>
> Entity:
> @Entity
> @Table(name="Customer", uniqueConstraints={@UniqueConstraint(columnNames="id")})
> public class Customer implements Serializable  {
> 	/** .*/
> 	private static final long serialVersionUID = 4011736633726247664L;
> 	@Id
> 	@GeneratedValue(strategy=GenerationType.IDENTITY)
> 	private long id;
> 	@Basic
> 	private String name;
> 	@OneToMany(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
> 	private List<CustomerAddress> addresses;
>     @Basic
>     private Date created = new Date();	
> ....
> }
> Exception:
> Caused by: <0.9.7-incubating nonfatal general error> org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3784)
> 	at org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:373)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:260)
> 	at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
> 	at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
> 	at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:876)
> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:834)
> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:756)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
> 	at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2152)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:251)
> 	at org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
> 	at org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
> 	at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1219)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:987)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:796)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:766)
> 	at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
> 	at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:227)
> 	at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:269)
> 	at crs.bus.impl.query.EntityQueries.queryFromPersonName(EntityQueries.java:18)
> 	at crs.bus.impl.CustomerQueryBean.findByPersonName(CustomerQueryBean.java:39)
> 	at crs.bus.proxies.CustomerQueryProxy.findByPersonName(CustomerQueryProxy.java:15)
> 	at crs.service.servant.CustomerQueryServant.findByPersonName(CustomerQueryServant.java:26)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:615)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeMethod(JavaDispatcher.java:178)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeOperation(JavaDispatcher.java:141)
> 	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processRequestResponse(SoapRPCProcessor.java:448)
> 	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processMessage(SoapRPCProcessor.java:413)
> 	at com.ibm.ws.webservices.engine.dispatchers.BasicDispatcher.processMessage(BasicDispatcher.java:134)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.SessionDispatcher.invoke(SessionDispatcher.java:204)
> 	... 31 more
> Caused by: com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
> 	at com.ibm.db2.jcc.c.wf.mb(wf.java:3193)
> 	at com.ibm.db2.jcc.c.wf.j(wf.java:3164)
> 	at com.ibm.db2.jcc.c.wf.getTimestamp(wf.java:750)
> 	at com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getTimestamp(WSJdbcResultSet.java:1994)
> 	at org.apache.openjpa.lib.jdbc.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:166)
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.getTimestamp(DBDictionary.java:727)
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.getDate(DBDictionary.java:594)
> 	at org.apache.openjpa.jdbc.sql.ResultSetResult.getDateInternal(ResultSetResult.java:303)
> 	at org.apache.openjpa.jdbc.sql.ResultSetResult.getObjectInternal(ResultSetResult.java:384)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.getObject(AbstractResult.java:662)
> 	at org.apache.openjpa.jdbc.meta.strats.HandlerStrategies.loadDataStore(HandlerStrategies.java:205)
> 	at org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy.load(HandlerFieldStrategy.java:172)
> 	at org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:788)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:833)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:785)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:336)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
> 	... 63 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (OPENJPA-260) Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)

Posted by "Justin Kilimnik (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/OPENJPA-260?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12505804 ] 

Justin Kilimnik commented on OPENJPA-260:
-----------------------------------------

Here is the condensed log:

[18/06/07 13:55:41:703 BST] 0000001f SystemErr     R 2766  crs  TRACE  [WebContainer : 0] openjpa.jdbc.SQL - <t 384046820, conn 745155690> executing prepstmnt 593765220 SELECT t0.id, t0.created, t0.name FROM Customer t0 WHERE (t0.name LIKE ? ESCAPE '\')  [params=(String) Brad%]
[18/06/07 13:55:42:343 BST] 0000001f SystemErr     R 3406  crs  TRACE  [WebContainer : 0] openjpa.jdbc.SQL - <t 384046820, conn 745155690> [640 ms] spent
[18/06/07 13:55:42:359 BST] 0000001f SystemErr     R 3422  crs  TRACE  [WebContainer : 0] openjpa.jdbc.SQL - <t 384046820, conn 745155690> executing prepstmnt 16646398 SELECT t0.id, t2.cid, t3.id, t3.city, t3.country, t3.flatNumber, t3.houseName, t3.number, t3.postcode, t3.streetName, t2.name FROM Customer t0 INNER JOIN Customer_CustomerAddress t1 ON t0.id = t1.Customer_id INNER JOIN CustomerAddress t2 ON t1.addresses_cid = t2.cid LEFT OUTER JOIN Address t3 ON t2.address_id = t3.id WHERE (t0.name LIKE ? ESCAPE '\') ORDER BY t0.id ASC  [params=(String) Brad%]
[18/06/07 13:55:42:359 BST] 0000001f SystemErr     R 3422  crs  TRACE  [WebContainer : 0] openjpa.jdbc.SQL - <t 384046820, conn 745155690> [0 ms] spent
[18/06/07 13:55:42:468 BST] 0000001f ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl initialize FFDC0009I: FFDC opened incident stream file C:\Program Files\IBM\SDP70\runtimes\base_v61\profiles\AppSrvWS01\logs\ffdc\server1_16e416e4_07.06.18_13.55.42_0.txt
[18/06/07 13:55:42:531 BST] 0000001f ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl resetIncidentStream FFDC0010I: FFDC closed incident stream file C:\Program Files\IBM\SDP70\runtimes\base_v61\profiles\AppSrvWS01\logs\ffdc\server1_16e416e4_07.06.18_13.55.42_0.txt
[18/06/07 13:55:42:578 BST] 0000001f SystemErr     R <0.9.7-incubating nonfatal general error> org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.

I will attach the complete log. 

I didn't use any specific features (ie. fetch plans).

Regards, Justin

> Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)
> ------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-260
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-260
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jpa
>    Affects Versions: 0.9.7
>         Environment: WebSphere Platform 6.1 [BASE 6.1.0.7 cf70711.17] [WEBSERVICES 6.1.0.7 u0712.14] 
> Host Operating System is Windows XP, version 5.1 build 2600 Service Pack 2
> Java version = J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223ifx-20070323 (JIT enabled)
> J9VM - 20070322_12058_lHdSMR
> JIT  - 20070109_1805ifx3_r8
> GC   - WASIFIX_2007, Java Compiler = j9jit23, Java VM name = IBM J9 VM
>            Reporter: Justin Kilimnik
>            Priority: Minor
>
> When adding "fetch=FetchType.EAGER" to a OneToMany field on an entity, I get a org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed. exception. This is on a persistence unit that is configured to use JTA Data Source (see config below) (running on WebSphere 6.1.0.7 with DB2 XA Driver). This works when using RESOURCE_LOCAL transaction-type (direct to DB2). The code also works if I remove the "fetch=FetchType.EAGER", therefore I presume there is a bug with the handling of managed transactions with EAGER fetching.
> The work around was to add the eager fetching to the query (i.e. "join fetch x.addresses") but I would think that this should work and might need looking in.
> persistence.xml:
> 	<persistence-unit name="crs" transaction-type="JTA">
> 		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> 		<jta-data-source>java:comp/env/jdbc/crsDS</jta-data-source>
> 		
> 		<class>crs.bus.entity.Customer</class>
>   		<class>crs.bus.entity.Address</class>
> 		<class>crs.bus.entity.CustomerAddress</class>
> 				
> 		<properties>
>  			<property name="openjpa.TransactionMode" value="managed" />
> 			<property name="openjpa.ConnectionFactoryMode" value="managed" />
> 			<property name="openjpa.jdbc.DBDictionary" value="db2" />
> 		</properties>
> Entity:
> @Entity
> @Table(name="Customer", uniqueConstraints={@UniqueConstraint(columnNames="id")})
> public class Customer implements Serializable  {
> 	/** .*/
> 	private static final long serialVersionUID = 4011736633726247664L;
> 	@Id
> 	@GeneratedValue(strategy=GenerationType.IDENTITY)
> 	private long id;
> 	@Basic
> 	private String name;
> 	@OneToMany(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
> 	private List<CustomerAddress> addresses;
>     @Basic
>     private Date created = new Date();	
> ....
> }
> Exception:
> Caused by: <0.9.7-incubating nonfatal general error> org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3784)
> 	at org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:373)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:260)
> 	at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
> 	at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
> 	at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:876)
> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:834)
> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:756)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
> 	at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2152)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:251)
> 	at org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
> 	at org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
> 	at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1219)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:987)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:796)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:766)
> 	at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
> 	at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:227)
> 	at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:269)
> 	at crs.bus.impl.query.EntityQueries.queryFromPersonName(EntityQueries.java:18)
> 	at crs.bus.impl.CustomerQueryBean.findByPersonName(CustomerQueryBean.java:39)
> 	at crs.bus.proxies.CustomerQueryProxy.findByPersonName(CustomerQueryProxy.java:15)
> 	at crs.service.servant.CustomerQueryServant.findByPersonName(CustomerQueryServant.java:26)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:615)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeMethod(JavaDispatcher.java:178)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeOperation(JavaDispatcher.java:141)
> 	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processRequestResponse(SoapRPCProcessor.java:448)
> 	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processMessage(SoapRPCProcessor.java:413)
> 	at com.ibm.ws.webservices.engine.dispatchers.BasicDispatcher.processMessage(BasicDispatcher.java:134)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.SessionDispatcher.invoke(SessionDispatcher.java:204)
> 	... 31 more
> Caused by: com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
> 	at com.ibm.db2.jcc.c.wf.mb(wf.java:3193)
> 	at com.ibm.db2.jcc.c.wf.j(wf.java:3164)
> 	at com.ibm.db2.jcc.c.wf.getTimestamp(wf.java:750)
> 	at com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getTimestamp(WSJdbcResultSet.java:1994)
> 	at org.apache.openjpa.lib.jdbc.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:166)
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.getTimestamp(DBDictionary.java:727)
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.getDate(DBDictionary.java:594)
> 	at org.apache.openjpa.jdbc.sql.ResultSetResult.getDateInternal(ResultSetResult.java:303)
> 	at org.apache.openjpa.jdbc.sql.ResultSetResult.getObjectInternal(ResultSetResult.java:384)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.getObject(AbstractResult.java:662)
> 	at org.apache.openjpa.jdbc.meta.strats.HandlerStrategies.loadDataStore(HandlerStrategies.java:205)
> 	at org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy.load(HandlerFieldStrategy.java:172)
> 	at org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:788)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:833)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:785)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:336)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
> 	... 63 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (OPENJPA-260) Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)

Posted by "Justin Kilimnik (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OPENJPA-260?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Justin Kilimnik updated OPENJPA-260:
------------------------------------

    Description: 
When adding "fetch=FetchType.EAGER" to a OneToMany field on an entity, I get a org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed. exception. This is on a persistence unit that is configured to use JTA Data Source (see config below) (running on WebSphere 6.1.0.7 with DB2 XA Driver). This works when using RESOURCE_LOCAL transaction-type (direct to DB2). The code also works if I remove the "fetch=FetchType.EAGER", therefore I presume there is a bug with the handling of managed transactions with EAGER fetching.

persistence.xml:
	<persistence-unit name="crs" transaction-type="JTA">
		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
		<jta-data-source>java:comp/env/jdbc/crsDS</jta-data-source>
		
		<class>crs.bus.entity.Customer</class>
  		<class>crs.bus.entity.Address</class>
		<class>crs.bus.entity.CustomerAddress</class>
				
		<properties>
 			<property name="openjpa.TransactionMode" value="managed" />
			<property name="openjpa.ConnectionFactoryMode" value="managed" />
			<property name="openjpa.jdbc.DBDictionary" value="db2" />
		</properties>

Entity:
@Entity
@Table(name="Customer", uniqueConstraints={@UniqueConstraint(columnNames="id")})
public class Customer implements Serializable  {
	/** .*/
	private static final long serialVersionUID = 4011736633726247664L;
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private long id;
	@Basic
	private String name;
	@OneToMany(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
	private List<CustomerAddress> addresses;
    @Basic
    private Date created = new Date();	
....
}

Exception:
Caused by: <0.9.7-incubating nonfatal general error> org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
	at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3784)
	at org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:373)
	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:260)
	at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
	at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
	at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:876)
	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:834)
	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:756)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
	at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2152)
	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:251)
	at org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
	at org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
	at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1219)
	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:987)
	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:796)
	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:766)
	at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
	at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:227)
	at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:269)
	at crs.bus.impl.query.EntityQueries.queryFromPersonName(EntityQueries.java:18)
	at crs.bus.impl.CustomerQueryBean.findByPersonName(CustomerQueryBean.java:39)
	at crs.bus.proxies.CustomerQueryProxy.findByPersonName(CustomerQueryProxy.java:15)
	at crs.service.servant.CustomerQueryServant.findByPersonName(CustomerQueryServant.java:26)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:615)
	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeMethod(JavaDispatcher.java:178)
	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeOperation(JavaDispatcher.java:141)
	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processRequestResponse(SoapRPCProcessor.java:448)
	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processMessage(SoapRPCProcessor.java:413)
	at com.ibm.ws.webservices.engine.dispatchers.BasicDispatcher.processMessage(BasicDispatcher.java:134)
	at com.ibm.ws.webservices.engine.dispatchers.java.SessionDispatcher.invoke(SessionDispatcher.java:204)
	... 31 more
Caused by: com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
	at com.ibm.db2.jcc.c.wf.mb(wf.java:3193)
	at com.ibm.db2.jcc.c.wf.j(wf.java:3164)
	at com.ibm.db2.jcc.c.wf.getTimestamp(wf.java:750)
	at com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getTimestamp(WSJdbcResultSet.java:1994)
	at org.apache.openjpa.lib.jdbc.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:166)
	at org.apache.openjpa.jdbc.sql.DBDictionary.getTimestamp(DBDictionary.java:727)
	at org.apache.openjpa.jdbc.sql.DBDictionary.getDate(DBDictionary.java:594)
	at org.apache.openjpa.jdbc.sql.ResultSetResult.getDateInternal(ResultSetResult.java:303)
	at org.apache.openjpa.jdbc.sql.ResultSetResult.getObjectInternal(ResultSetResult.java:384)
	at org.apache.openjpa.jdbc.sql.AbstractResult.getObject(AbstractResult.java:662)
	at org.apache.openjpa.jdbc.meta.strats.HandlerStrategies.loadDataStore(HandlerStrategies.java:205)
	at org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy.load(HandlerFieldStrategy.java:172)
	at org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:788)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:833)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:785)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:336)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
	... 63 more




  was:
When adding "fetch=FetchType.EAGER" to a entity, I get a org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed. exception. This is on a persistence unit that is configured to use JTA Data Source (see config below) (running on WebSphere 6.1.0.7 with DB2 XA Driver). This works when using RESOURCE_LOCAL transaction-type (direct to DB2). The code also works if I remove the "fetch=FetchType.EAGER", therefore I presume there is a bug with the handling of managed transactions with EAGER fetching.

persistence.xml:
	<persistence-unit name="crs" transaction-type="JTA">
		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
		<jta-data-source>java:comp/env/jdbc/crsDS</jta-data-source>
		
		<class>crs.bus.entity.Customer</class>
  		<class>crs.bus.entity.Address</class>
		<class>crs.bus.entity.CustomerAddress</class>
				
		<properties>
 			<property name="openjpa.TransactionMode" value="managed" />
			<property name="openjpa.ConnectionFactoryMode" value="managed" />
			<property name="openjpa.jdbc.DBDictionary" value="db2" />
		</properties>

Entity:
@Entity
@Table(name="Customer", uniqueConstraints={@UniqueConstraint(columnNames="id")})
public class Customer implements Serializable  {
	/** .*/
	private static final long serialVersionUID = 4011736633726247664L;
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private long id;
	@Basic
	private String name;
	@OneToMany(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
	private List<CustomerAddress> addresses;
    @Basic
    private Date created = new Date();	
....
}

Exception:
Caused by: <0.9.7-incubating nonfatal general error> org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
	at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3784)
	at org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:373)
	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:260)
	at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
	at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
	at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:876)
	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:834)
	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:756)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
	at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2152)
	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:251)
	at org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
	at org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
	at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1219)
	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:987)
	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:796)
	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:766)
	at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
	at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:227)
	at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:269)
	at crs.bus.impl.query.EntityQueries.queryFromPersonName(EntityQueries.java:18)
	at crs.bus.impl.CustomerQueryBean.findByPersonName(CustomerQueryBean.java:39)
	at crs.bus.proxies.CustomerQueryProxy.findByPersonName(CustomerQueryProxy.java:15)
	at crs.service.servant.CustomerQueryServant.findByPersonName(CustomerQueryServant.java:26)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:615)
	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeMethod(JavaDispatcher.java:178)
	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeOperation(JavaDispatcher.java:141)
	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processRequestResponse(SoapRPCProcessor.java:448)
	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processMessage(SoapRPCProcessor.java:413)
	at com.ibm.ws.webservices.engine.dispatchers.BasicDispatcher.processMessage(BasicDispatcher.java:134)
	at com.ibm.ws.webservices.engine.dispatchers.java.SessionDispatcher.invoke(SessionDispatcher.java:204)
	... 31 more
Caused by: com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
	at com.ibm.db2.jcc.c.wf.mb(wf.java:3193)
	at com.ibm.db2.jcc.c.wf.j(wf.java:3164)
	at com.ibm.db2.jcc.c.wf.getTimestamp(wf.java:750)
	at com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getTimestamp(WSJdbcResultSet.java:1994)
	at org.apache.openjpa.lib.jdbc.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:166)
	at org.apache.openjpa.jdbc.sql.DBDictionary.getTimestamp(DBDictionary.java:727)
	at org.apache.openjpa.jdbc.sql.DBDictionary.getDate(DBDictionary.java:594)
	at org.apache.openjpa.jdbc.sql.ResultSetResult.getDateInternal(ResultSetResult.java:303)
	at org.apache.openjpa.jdbc.sql.ResultSetResult.getObjectInternal(ResultSetResult.java:384)
	at org.apache.openjpa.jdbc.sql.AbstractResult.getObject(AbstractResult.java:662)
	at org.apache.openjpa.jdbc.meta.strats.HandlerStrategies.loadDataStore(HandlerStrategies.java:205)
	at org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy.load(HandlerFieldStrategy.java:172)
	at org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:788)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:833)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:785)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:336)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
	... 63 more





> Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)
> ------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-260
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-260
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jpa
>    Affects Versions: 0.9.7
>         Environment: WebSphere Platform 6.1 [BASE 6.1.0.7 cf70711.17] [WEBSERVICES 6.1.0.7 u0712.14] 
> Host Operating System is Windows XP, version 5.1 build 2600 Service Pack 2
> Java version = J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223ifx-20070323 (JIT enabled)
> J9VM - 20070322_12058_lHdSMR
> JIT  - 20070109_1805ifx3_r8
> GC   - WASIFIX_2007, Java Compiler = j9jit23, Java VM name = IBM J9 VM
>            Reporter: Justin Kilimnik
>
> When adding "fetch=FetchType.EAGER" to a OneToMany field on an entity, I get a org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed. exception. This is on a persistence unit that is configured to use JTA Data Source (see config below) (running on WebSphere 6.1.0.7 with DB2 XA Driver). This works when using RESOURCE_LOCAL transaction-type (direct to DB2). The code also works if I remove the "fetch=FetchType.EAGER", therefore I presume there is a bug with the handling of managed transactions with EAGER fetching.
> persistence.xml:
> 	<persistence-unit name="crs" transaction-type="JTA">
> 		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> 		<jta-data-source>java:comp/env/jdbc/crsDS</jta-data-source>
> 		
> 		<class>crs.bus.entity.Customer</class>
>   		<class>crs.bus.entity.Address</class>
> 		<class>crs.bus.entity.CustomerAddress</class>
> 				
> 		<properties>
>  			<property name="openjpa.TransactionMode" value="managed" />
> 			<property name="openjpa.ConnectionFactoryMode" value="managed" />
> 			<property name="openjpa.jdbc.DBDictionary" value="db2" />
> 		</properties>
> Entity:
> @Entity
> @Table(name="Customer", uniqueConstraints={@UniqueConstraint(columnNames="id")})
> public class Customer implements Serializable  {
> 	/** .*/
> 	private static final long serialVersionUID = 4011736633726247664L;
> 	@Id
> 	@GeneratedValue(strategy=GenerationType.IDENTITY)
> 	private long id;
> 	@Basic
> 	private String name;
> 	@OneToMany(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
> 	private List<CustomerAddress> addresses;
>     @Basic
>     private Date created = new Date();	
> ....
> }
> Exception:
> Caused by: <0.9.7-incubating nonfatal general error> org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3784)
> 	at org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:373)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:260)
> 	at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
> 	at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
> 	at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:876)
> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:834)
> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:756)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
> 	at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2152)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:251)
> 	at org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
> 	at org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
> 	at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1219)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:987)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:796)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:766)
> 	at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
> 	at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:227)
> 	at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:269)
> 	at crs.bus.impl.query.EntityQueries.queryFromPersonName(EntityQueries.java:18)
> 	at crs.bus.impl.CustomerQueryBean.findByPersonName(CustomerQueryBean.java:39)
> 	at crs.bus.proxies.CustomerQueryProxy.findByPersonName(CustomerQueryProxy.java:15)
> 	at crs.service.servant.CustomerQueryServant.findByPersonName(CustomerQueryServant.java:26)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:615)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeMethod(JavaDispatcher.java:178)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeOperation(JavaDispatcher.java:141)
> 	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processRequestResponse(SoapRPCProcessor.java:448)
> 	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processMessage(SoapRPCProcessor.java:413)
> 	at com.ibm.ws.webservices.engine.dispatchers.BasicDispatcher.processMessage(BasicDispatcher.java:134)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.SessionDispatcher.invoke(SessionDispatcher.java:204)
> 	... 31 more
> Caused by: com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
> 	at com.ibm.db2.jcc.c.wf.mb(wf.java:3193)
> 	at com.ibm.db2.jcc.c.wf.j(wf.java:3164)
> 	at com.ibm.db2.jcc.c.wf.getTimestamp(wf.java:750)
> 	at com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getTimestamp(WSJdbcResultSet.java:1994)
> 	at org.apache.openjpa.lib.jdbc.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:166)
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.getTimestamp(DBDictionary.java:727)
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.getDate(DBDictionary.java:594)
> 	at org.apache.openjpa.jdbc.sql.ResultSetResult.getDateInternal(ResultSetResult.java:303)
> 	at org.apache.openjpa.jdbc.sql.ResultSetResult.getObjectInternal(ResultSetResult.java:384)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.getObject(AbstractResult.java:662)
> 	at org.apache.openjpa.jdbc.meta.strats.HandlerStrategies.loadDataStore(HandlerStrategies.java:205)
> 	at org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy.load(HandlerFieldStrategy.java:172)
> 	at org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:788)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:833)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:785)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:336)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
> 	... 63 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (OPENJPA-260) Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)

Posted by "Patrick Linskey (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/OPENJPA-260?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12505431 ] 

Patrick Linskey commented on OPENJPA-260:
-----------------------------------------

> The work around was to add the eager fetching to the query (i.e. "join fetch x.addresses") 
> but I would think that this should work and might need looking in.

Definitely.

Could you post the SQL that is generated in the two use cases? You can get this by setting the 'openjpa.Log' property to 'SQL=TRACE'.

Also, do you use any other OpenJPA-specific features when executing the query, such as fetch plans?

> Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)
> ------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-260
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-260
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jpa
>    Affects Versions: 0.9.7
>         Environment: WebSphere Platform 6.1 [BASE 6.1.0.7 cf70711.17] [WEBSERVICES 6.1.0.7 u0712.14] 
> Host Operating System is Windows XP, version 5.1 build 2600 Service Pack 2
> Java version = J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223ifx-20070323 (JIT enabled)
> J9VM - 20070322_12058_lHdSMR
> JIT  - 20070109_1805ifx3_r8
> GC   - WASIFIX_2007, Java Compiler = j9jit23, Java VM name = IBM J9 VM
>            Reporter: Justin Kilimnik
>            Priority: Minor
>
> When adding "fetch=FetchType.EAGER" to a OneToMany field on an entity, I get a org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed. exception. This is on a persistence unit that is configured to use JTA Data Source (see config below) (running on WebSphere 6.1.0.7 with DB2 XA Driver). This works when using RESOURCE_LOCAL transaction-type (direct to DB2). The code also works if I remove the "fetch=FetchType.EAGER", therefore I presume there is a bug with the handling of managed transactions with EAGER fetching.
> The work around was to add the eager fetching to the query (i.e. "join fetch x.addresses") but I would think that this should work and might need looking in.
> persistence.xml:
> 	<persistence-unit name="crs" transaction-type="JTA">
> 		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> 		<jta-data-source>java:comp/env/jdbc/crsDS</jta-data-source>
> 		
> 		<class>crs.bus.entity.Customer</class>
>   		<class>crs.bus.entity.Address</class>
> 		<class>crs.bus.entity.CustomerAddress</class>
> 				
> 		<properties>
>  			<property name="openjpa.TransactionMode" value="managed" />
> 			<property name="openjpa.ConnectionFactoryMode" value="managed" />
> 			<property name="openjpa.jdbc.DBDictionary" value="db2" />
> 		</properties>
> Entity:
> @Entity
> @Table(name="Customer", uniqueConstraints={@UniqueConstraint(columnNames="id")})
> public class Customer implements Serializable  {
> 	/** .*/
> 	private static final long serialVersionUID = 4011736633726247664L;
> 	@Id
> 	@GeneratedValue(strategy=GenerationType.IDENTITY)
> 	private long id;
> 	@Basic
> 	private String name;
> 	@OneToMany(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
> 	private List<CustomerAddress> addresses;
>     @Basic
>     private Date created = new Date();	
> ....
> }
> Exception:
> Caused by: <0.9.7-incubating nonfatal general error> org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3784)
> 	at org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:373)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:260)
> 	at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
> 	at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
> 	at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:876)
> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:834)
> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:756)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
> 	at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2152)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:251)
> 	at org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
> 	at org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
> 	at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1219)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:987)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:796)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:766)
> 	at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
> 	at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:227)
> 	at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:269)
> 	at crs.bus.impl.query.EntityQueries.queryFromPersonName(EntityQueries.java:18)
> 	at crs.bus.impl.CustomerQueryBean.findByPersonName(CustomerQueryBean.java:39)
> 	at crs.bus.proxies.CustomerQueryProxy.findByPersonName(CustomerQueryProxy.java:15)
> 	at crs.service.servant.CustomerQueryServant.findByPersonName(CustomerQueryServant.java:26)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:615)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeMethod(JavaDispatcher.java:178)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeOperation(JavaDispatcher.java:141)
> 	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processRequestResponse(SoapRPCProcessor.java:448)
> 	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processMessage(SoapRPCProcessor.java:413)
> 	at com.ibm.ws.webservices.engine.dispatchers.BasicDispatcher.processMessage(BasicDispatcher.java:134)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.SessionDispatcher.invoke(SessionDispatcher.java:204)
> 	... 31 more
> Caused by: com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
> 	at com.ibm.db2.jcc.c.wf.mb(wf.java:3193)
> 	at com.ibm.db2.jcc.c.wf.j(wf.java:3164)
> 	at com.ibm.db2.jcc.c.wf.getTimestamp(wf.java:750)
> 	at com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getTimestamp(WSJdbcResultSet.java:1994)
> 	at org.apache.openjpa.lib.jdbc.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:166)
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.getTimestamp(DBDictionary.java:727)
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.getDate(DBDictionary.java:594)
> 	at org.apache.openjpa.jdbc.sql.ResultSetResult.getDateInternal(ResultSetResult.java:303)
> 	at org.apache.openjpa.jdbc.sql.ResultSetResult.getObjectInternal(ResultSetResult.java:384)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.getObject(AbstractResult.java:662)
> 	at org.apache.openjpa.jdbc.meta.strats.HandlerStrategies.loadDataStore(HandlerStrategies.java:205)
> 	at org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy.load(HandlerFieldStrategy.java:172)
> 	at org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:788)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:833)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:785)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:336)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
> 	... 63 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (OPENJPA-260) Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)

Posted by "Bogdan Stroe (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/OPENJPA-260?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12611195#action_12611195 ] 

Bogdan Stroe commented on OPENJPA-260:
--------------------------------------

Any progress on this issue? I have the same problem in my current project.

> Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)
> ------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-260
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-260
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jpa
>    Affects Versions: 0.9.7
>         Environment: WebSphere Platform 6.1 [BASE 6.1.0.7 cf70711.17] [WEBSERVICES 6.1.0.7 u0712.14] 
> Host Operating System is Windows XP, version 5.1 build 2600 Service Pack 2
> Java version = J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223ifx-20070323 (JIT enabled)
> J9VM - 20070322_12058_lHdSMR
> JIT  - 20070109_1805ifx3_r8
> GC   - WASIFIX_2007, Java Compiler = j9jit23, Java VM name = IBM J9 VM
>            Reporter: Justin Kilimnik
>            Priority: Minor
>         Attachments: log.txt
>
>
> When adding "fetch=FetchType.EAGER" to a OneToMany field on an entity, I get a org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed. exception. This is on a persistence unit that is configured to use JTA Data Source (see config below) (running on WebSphere 6.1.0.7 with DB2 XA Driver). This works when using RESOURCE_LOCAL transaction-type (direct to DB2). The code also works if I remove the "fetch=FetchType.EAGER", therefore I presume there is a bug with the handling of managed transactions with EAGER fetching.
> The work around was to add the eager fetching to the query (i.e. "join fetch x.addresses") but I would think that this should work and might need looking in.
> persistence.xml:
> 	<persistence-unit name="crs" transaction-type="JTA">
> 		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> 		<jta-data-source>java:comp/env/jdbc/crsDS</jta-data-source>
> 		
> 		<class>crs.bus.entity.Customer</class>
>   		<class>crs.bus.entity.Address</class>
> 		<class>crs.bus.entity.CustomerAddress</class>
> 				
> 		<properties>
>  			<property name="openjpa.TransactionMode" value="managed" />
> 			<property name="openjpa.ConnectionFactoryMode" value="managed" />
> 			<property name="openjpa.jdbc.DBDictionary" value="db2" />
> 		</properties>
> Entity:
> @Entity
> @Table(name="Customer", uniqueConstraints={@UniqueConstraint(columnNames="id")})
> public class Customer implements Serializable  {
> 	/** .*/
> 	private static final long serialVersionUID = 4011736633726247664L;
> 	@Id
> 	@GeneratedValue(strategy=GenerationType.IDENTITY)
> 	private long id;
> 	@Basic
> 	private String name;
> 	@OneToMany(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
> 	private List<CustomerAddress> addresses;
>     @Basic
>     private Date created = new Date();	
> ....
> }
> Exception:
> Caused by: <0.9.7-incubating nonfatal general error> org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3784)
> 	at org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:373)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:260)
> 	at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
> 	at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
> 	at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:876)
> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:834)
> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:756)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
> 	at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2152)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:251)
> 	at org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
> 	at org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
> 	at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1219)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:987)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:796)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:766)
> 	at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
> 	at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:227)
> 	at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:269)
> 	at crs.bus.impl.query.EntityQueries.queryFromPersonName(EntityQueries.java:18)
> 	at crs.bus.impl.CustomerQueryBean.findByPersonName(CustomerQueryBean.java:39)
> 	at crs.bus.proxies.CustomerQueryProxy.findByPersonName(CustomerQueryProxy.java:15)
> 	at crs.service.servant.CustomerQueryServant.findByPersonName(CustomerQueryServant.java:26)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:615)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeMethod(JavaDispatcher.java:178)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeOperation(JavaDispatcher.java:141)
> 	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processRequestResponse(SoapRPCProcessor.java:448)
> 	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processMessage(SoapRPCProcessor.java:413)
> 	at com.ibm.ws.webservices.engine.dispatchers.BasicDispatcher.processMessage(BasicDispatcher.java:134)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.SessionDispatcher.invoke(SessionDispatcher.java:204)
> 	... 31 more
> Caused by: com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
> 	at com.ibm.db2.jcc.c.wf.mb(wf.java:3193)
> 	at com.ibm.db2.jcc.c.wf.j(wf.java:3164)
> 	at com.ibm.db2.jcc.c.wf.getTimestamp(wf.java:750)
> 	at com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getTimestamp(WSJdbcResultSet.java:1994)
> 	at org.apache.openjpa.lib.jdbc.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:166)
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.getTimestamp(DBDictionary.java:727)
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.getDate(DBDictionary.java:594)
> 	at org.apache.openjpa.jdbc.sql.ResultSetResult.getDateInternal(ResultSetResult.java:303)
> 	at org.apache.openjpa.jdbc.sql.ResultSetResult.getObjectInternal(ResultSetResult.java:384)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.getObject(AbstractResult.java:662)
> 	at org.apache.openjpa.jdbc.meta.strats.HandlerStrategies.loadDataStore(HandlerStrategies.java:205)
> 	at org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy.load(HandlerFieldStrategy.java:172)
> 	at org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:788)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:833)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:785)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:336)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
> 	... 63 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (OPENJPA-260) Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)

Posted by "Bogdan Stroe (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/OPENJPA-260?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12611204#action_12611204 ] 

Bogdan Stroe commented on OPENJPA-260:
--------------------------------------

The work-around we found for the time being is to remove the annotation:
@TransactionAttribute(value=TransactionAttributeType.NOT_SUPPORTED) from the method calling the DAO that leads to this error.
So the method will be executed in a transaction.
We are using WebSphere 6.1.0 with DB2 XA Driver.
If I execute the same code out of container (in unit tests) it works fine.

> Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)
> ------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-260
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-260
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jpa
>    Affects Versions: 0.9.7
>         Environment: WebSphere Platform 6.1 [BASE 6.1.0.7 cf70711.17] [WEBSERVICES 6.1.0.7 u0712.14] 
> Host Operating System is Windows XP, version 5.1 build 2600 Service Pack 2
> Java version = J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223ifx-20070323 (JIT enabled)
> J9VM - 20070322_12058_lHdSMR
> JIT  - 20070109_1805ifx3_r8
> GC   - WASIFIX_2007, Java Compiler = j9jit23, Java VM name = IBM J9 VM
>            Reporter: Justin Kilimnik
>            Priority: Minor
>         Attachments: log.txt
>
>
> When adding "fetch=FetchType.EAGER" to a OneToMany field on an entity, I get a org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed. exception. This is on a persistence unit that is configured to use JTA Data Source (see config below) (running on WebSphere 6.1.0.7 with DB2 XA Driver). This works when using RESOURCE_LOCAL transaction-type (direct to DB2). The code also works if I remove the "fetch=FetchType.EAGER", therefore I presume there is a bug with the handling of managed transactions with EAGER fetching.
> The work around was to add the eager fetching to the query (i.e. "join fetch x.addresses") but I would think that this should work and might need looking in.
> persistence.xml:
> 	<persistence-unit name="crs" transaction-type="JTA">
> 		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> 		<jta-data-source>java:comp/env/jdbc/crsDS</jta-data-source>
> 		
> 		<class>crs.bus.entity.Customer</class>
>   		<class>crs.bus.entity.Address</class>
> 		<class>crs.bus.entity.CustomerAddress</class>
> 				
> 		<properties>
>  			<property name="openjpa.TransactionMode" value="managed" />
> 			<property name="openjpa.ConnectionFactoryMode" value="managed" />
> 			<property name="openjpa.jdbc.DBDictionary" value="db2" />
> 		</properties>
> Entity:
> @Entity
> @Table(name="Customer", uniqueConstraints={@UniqueConstraint(columnNames="id")})
> public class Customer implements Serializable  {
> 	/** .*/
> 	private static final long serialVersionUID = 4011736633726247664L;
> 	@Id
> 	@GeneratedValue(strategy=GenerationType.IDENTITY)
> 	private long id;
> 	@Basic
> 	private String name;
> 	@OneToMany(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
> 	private List<CustomerAddress> addresses;
>     @Basic
>     private Date created = new Date();	
> ....
> }
> Exception:
> Caused by: <0.9.7-incubating nonfatal general error> org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3784)
> 	at org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:373)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:260)
> 	at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
> 	at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
> 	at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:876)
> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:834)
> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:756)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
> 	at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2152)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:251)
> 	at org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
> 	at org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
> 	at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1219)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:987)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:796)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:766)
> 	at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
> 	at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:227)
> 	at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:269)
> 	at crs.bus.impl.query.EntityQueries.queryFromPersonName(EntityQueries.java:18)
> 	at crs.bus.impl.CustomerQueryBean.findByPersonName(CustomerQueryBean.java:39)
> 	at crs.bus.proxies.CustomerQueryProxy.findByPersonName(CustomerQueryProxy.java:15)
> 	at crs.service.servant.CustomerQueryServant.findByPersonName(CustomerQueryServant.java:26)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:615)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeMethod(JavaDispatcher.java:178)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeOperation(JavaDispatcher.java:141)
> 	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processRequestResponse(SoapRPCProcessor.java:448)
> 	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processMessage(SoapRPCProcessor.java:413)
> 	at com.ibm.ws.webservices.engine.dispatchers.BasicDispatcher.processMessage(BasicDispatcher.java:134)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.SessionDispatcher.invoke(SessionDispatcher.java:204)
> 	... 31 more
> Caused by: com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
> 	at com.ibm.db2.jcc.c.wf.mb(wf.java:3193)
> 	at com.ibm.db2.jcc.c.wf.j(wf.java:3164)
> 	at com.ibm.db2.jcc.c.wf.getTimestamp(wf.java:750)
> 	at com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getTimestamp(WSJdbcResultSet.java:1994)
> 	at org.apache.openjpa.lib.jdbc.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:166)
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.getTimestamp(DBDictionary.java:727)
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.getDate(DBDictionary.java:594)
> 	at org.apache.openjpa.jdbc.sql.ResultSetResult.getDateInternal(ResultSetResult.java:303)
> 	at org.apache.openjpa.jdbc.sql.ResultSetResult.getObjectInternal(ResultSetResult.java:384)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.getObject(AbstractResult.java:662)
> 	at org.apache.openjpa.jdbc.meta.strats.HandlerStrategies.loadDataStore(HandlerStrategies.java:205)
> 	at org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy.load(HandlerFieldStrategy.java:172)
> 	at org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:788)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:833)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:785)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:336)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
> 	... 63 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Closed: (OPENJPA-260) Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)

Posted by "Rick Curtis (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OPENJPA-260?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Rick Curtis closed OPENJPA-260.
-------------------------------

    Resolution: Won't Fix

Please reopen if you still feel there is an issue that needs to be addressed here.

> Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)
> ------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-260
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-260
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jpa
>    Affects Versions: 0.9.7
>         Environment: WebSphere Platform 6.1 [BASE 6.1.0.7 cf70711.17] [WEBSERVICES 6.1.0.7 u0712.14] 
> Host Operating System is Windows XP, version 5.1 build 2600 Service Pack 2
> Java version = J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223ifx-20070323 (JIT enabled)
> J9VM - 20070322_12058_lHdSMR
> JIT  - 20070109_1805ifx3_r8
> GC   - WASIFIX_2007, Java Compiler = j9jit23, Java VM name = IBM J9 VM
>            Reporter: Justin Kilimnik
>            Priority: Minor
>         Attachments: log.txt
>
>
> When adding "fetch=FetchType.EAGER" to a OneToMany field on an entity, I get a org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed. exception. This is on a persistence unit that is configured to use JTA Data Source (see config below) (running on WebSphere 6.1.0.7 with DB2 XA Driver). This works when using RESOURCE_LOCAL transaction-type (direct to DB2). The code also works if I remove the "fetch=FetchType.EAGER", therefore I presume there is a bug with the handling of managed transactions with EAGER fetching.
> The work around was to add the eager fetching to the query (i.e. "join fetch x.addresses") but I would think that this should work and might need looking in.
> persistence.xml:
> 	<persistence-unit name="crs" transaction-type="JTA">
> 		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> 		<jta-data-source>java:comp/env/jdbc/crsDS</jta-data-source>
> 		
> 		<class>crs.bus.entity.Customer</class>
>   		<class>crs.bus.entity.Address</class>
> 		<class>crs.bus.entity.CustomerAddress</class>
> 				
> 		<properties>
>  			<property name="openjpa.TransactionMode" value="managed" />
> 			<property name="openjpa.ConnectionFactoryMode" value="managed" />
> 			<property name="openjpa.jdbc.DBDictionary" value="db2" />
> 		</properties>
> Entity:
> @Entity
> @Table(name="Customer", uniqueConstraints={@UniqueConstraint(columnNames="id")})
> public class Customer implements Serializable  {
> 	/** .*/
> 	private static final long serialVersionUID = 4011736633726247664L;
> 	@Id
> 	@GeneratedValue(strategy=GenerationType.IDENTITY)
> 	private long id;
> 	@Basic
> 	private String name;
> 	@OneToMany(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
> 	private List<CustomerAddress> addresses;
>     @Basic
>     private Date created = new Date();	
> ....
> }
> Exception:
> Caused by: <0.9.7-incubating nonfatal general error> org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3784)
> 	at org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:373)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:260)
> 	at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
> 	at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
> 	at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:876)
> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:834)
> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:756)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
> 	at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2152)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:251)
> 	at org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
> 	at org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
> 	at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1219)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:987)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:796)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:766)
> 	at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
> 	at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:227)
> 	at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:269)
> 	at crs.bus.impl.query.EntityQueries.queryFromPersonName(EntityQueries.java:18)
> 	at crs.bus.impl.CustomerQueryBean.findByPersonName(CustomerQueryBean.java:39)
> 	at crs.bus.proxies.CustomerQueryProxy.findByPersonName(CustomerQueryProxy.java:15)
> 	at crs.service.servant.CustomerQueryServant.findByPersonName(CustomerQueryServant.java:26)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:615)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeMethod(JavaDispatcher.java:178)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeOperation(JavaDispatcher.java:141)
> 	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processRequestResponse(SoapRPCProcessor.java:448)
> 	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processMessage(SoapRPCProcessor.java:413)
> 	at com.ibm.ws.webservices.engine.dispatchers.BasicDispatcher.processMessage(BasicDispatcher.java:134)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.SessionDispatcher.invoke(SessionDispatcher.java:204)
> 	... 31 more
> Caused by: com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
> 	at com.ibm.db2.jcc.c.wf.mb(wf.java:3193)
> 	at com.ibm.db2.jcc.c.wf.j(wf.java:3164)
> 	at com.ibm.db2.jcc.c.wf.getTimestamp(wf.java:750)
> 	at com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getTimestamp(WSJdbcResultSet.java:1994)
> 	at org.apache.openjpa.lib.jdbc.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:166)
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.getTimestamp(DBDictionary.java:727)
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.getDate(DBDictionary.java:594)
> 	at org.apache.openjpa.jdbc.sql.ResultSetResult.getDateInternal(ResultSetResult.java:303)
> 	at org.apache.openjpa.jdbc.sql.ResultSetResult.getObjectInternal(ResultSetResult.java:384)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.getObject(AbstractResult.java:662)
> 	at org.apache.openjpa.jdbc.meta.strats.HandlerStrategies.loadDataStore(HandlerStrategies.java:205)
> 	at org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy.load(HandlerFieldStrategy.java:172)
> 	at org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:788)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:833)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:785)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:336)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
> 	... 63 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (OPENJPA-260) Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)

Posted by "Justin Kilimnik (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OPENJPA-260?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Justin Kilimnik updated OPENJPA-260:
------------------------------------

    Attachment: log.txt

Full Log of Bug with SQL Trace.

> Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)
> ------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-260
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-260
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jpa
>    Affects Versions: 0.9.7
>         Environment: WebSphere Platform 6.1 [BASE 6.1.0.7 cf70711.17] [WEBSERVICES 6.1.0.7 u0712.14] 
> Host Operating System is Windows XP, version 5.1 build 2600 Service Pack 2
> Java version = J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223ifx-20070323 (JIT enabled)
> J9VM - 20070322_12058_lHdSMR
> JIT  - 20070109_1805ifx3_r8
> GC   - WASIFIX_2007, Java Compiler = j9jit23, Java VM name = IBM J9 VM
>            Reporter: Justin Kilimnik
>            Priority: Minor
>         Attachments: log.txt
>
>
> When adding "fetch=FetchType.EAGER" to a OneToMany field on an entity, I get a org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed. exception. This is on a persistence unit that is configured to use JTA Data Source (see config below) (running on WebSphere 6.1.0.7 with DB2 XA Driver). This works when using RESOURCE_LOCAL transaction-type (direct to DB2). The code also works if I remove the "fetch=FetchType.EAGER", therefore I presume there is a bug with the handling of managed transactions with EAGER fetching.
> The work around was to add the eager fetching to the query (i.e. "join fetch x.addresses") but I would think that this should work and might need looking in.
> persistence.xml:
> 	<persistence-unit name="crs" transaction-type="JTA">
> 		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> 		<jta-data-source>java:comp/env/jdbc/crsDS</jta-data-source>
> 		
> 		<class>crs.bus.entity.Customer</class>
>   		<class>crs.bus.entity.Address</class>
> 		<class>crs.bus.entity.CustomerAddress</class>
> 				
> 		<properties>
>  			<property name="openjpa.TransactionMode" value="managed" />
> 			<property name="openjpa.ConnectionFactoryMode" value="managed" />
> 			<property name="openjpa.jdbc.DBDictionary" value="db2" />
> 		</properties>
> Entity:
> @Entity
> @Table(name="Customer", uniqueConstraints={@UniqueConstraint(columnNames="id")})
> public class Customer implements Serializable  {
> 	/** .*/
> 	private static final long serialVersionUID = 4011736633726247664L;
> 	@Id
> 	@GeneratedValue(strategy=GenerationType.IDENTITY)
> 	private long id;
> 	@Basic
> 	private String name;
> 	@OneToMany(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
> 	private List<CustomerAddress> addresses;
>     @Basic
>     private Date created = new Date();	
> ....
> }
> Exception:
> Caused by: <0.9.7-incubating nonfatal general error> org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3784)
> 	at org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:373)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:260)
> 	at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
> 	at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
> 	at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:876)
> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:834)
> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:756)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
> 	at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2152)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:251)
> 	at org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
> 	at org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
> 	at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1219)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:987)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:796)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:766)
> 	at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
> 	at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:227)
> 	at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:269)
> 	at crs.bus.impl.query.EntityQueries.queryFromPersonName(EntityQueries.java:18)
> 	at crs.bus.impl.CustomerQueryBean.findByPersonName(CustomerQueryBean.java:39)
> 	at crs.bus.proxies.CustomerQueryProxy.findByPersonName(CustomerQueryProxy.java:15)
> 	at crs.service.servant.CustomerQueryServant.findByPersonName(CustomerQueryServant.java:26)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:615)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeMethod(JavaDispatcher.java:178)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeOperation(JavaDispatcher.java:141)
> 	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processRequestResponse(SoapRPCProcessor.java:448)
> 	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processMessage(SoapRPCProcessor.java:413)
> 	at com.ibm.ws.webservices.engine.dispatchers.BasicDispatcher.processMessage(BasicDispatcher.java:134)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.SessionDispatcher.invoke(SessionDispatcher.java:204)
> 	... 31 more
> Caused by: com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
> 	at com.ibm.db2.jcc.c.wf.mb(wf.java:3193)
> 	at com.ibm.db2.jcc.c.wf.j(wf.java:3164)
> 	at com.ibm.db2.jcc.c.wf.getTimestamp(wf.java:750)
> 	at com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getTimestamp(WSJdbcResultSet.java:1994)
> 	at org.apache.openjpa.lib.jdbc.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:166)
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.getTimestamp(DBDictionary.java:727)
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.getDate(DBDictionary.java:594)
> 	at org.apache.openjpa.jdbc.sql.ResultSetResult.getDateInternal(ResultSetResult.java:303)
> 	at org.apache.openjpa.jdbc.sql.ResultSetResult.getObjectInternal(ResultSetResult.java:384)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.getObject(AbstractResult.java:662)
> 	at org.apache.openjpa.jdbc.meta.strats.HandlerStrategies.loadDataStore(HandlerStrategies.java:205)
> 	at org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy.load(HandlerFieldStrategy.java:172)
> 	at org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:788)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:833)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:785)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:336)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
> 	... 63 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (OPENJPA-260) Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)

Posted by "Albert Lee (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/OPENJPA-260?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12611224#action_12611224 ] 

Albert Lee commented on OPENJPA-260:
------------------------------------

By default, the application server configures the resultSetHoldability custom property with a value of 2 (CLOSE_CURSORS_AT_COMMIT). This property causes DB2 to close its resultSet/cursor at transaction boundaries. Despite DB2's default resultSetHoldability value of 1 (HOLD_CURSORS_OVER_COMMIT), the application server retains the default value of 2 to avoid breaking compatibilities with previous releases of the application server. You can change the default if the need arises.

What level of DB2 fixpack are you using?

Albert Lee.

> Using FetchType.EAGER on OneToMany using jta data source causes result set is closed (DB2)
> ------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-260
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-260
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jpa
>    Affects Versions: 0.9.7
>         Environment: WebSphere Platform 6.1 [BASE 6.1.0.7 cf70711.17] [WEBSERVICES 6.1.0.7 u0712.14] 
> Host Operating System is Windows XP, version 5.1 build 2600 Service Pack 2
> Java version = J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223ifx-20070323 (JIT enabled)
> J9VM - 20070322_12058_lHdSMR
> JIT  - 20070109_1805ifx3_r8
> GC   - WASIFIX_2007, Java Compiler = j9jit23, Java VM name = IBM J9 VM
>            Reporter: Justin Kilimnik
>            Priority: Minor
>         Attachments: log.txt
>
>
> When adding "fetch=FetchType.EAGER" to a OneToMany field on an entity, I get a org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed. exception. This is on a persistence unit that is configured to use JTA Data Source (see config below) (running on WebSphere 6.1.0.7 with DB2 XA Driver). This works when using RESOURCE_LOCAL transaction-type (direct to DB2). The code also works if I remove the "fetch=FetchType.EAGER", therefore I presume there is a bug with the handling of managed transactions with EAGER fetching.
> The work around was to add the eager fetching to the query (i.e. "join fetch x.addresses") but I would think that this should work and might need looking in.
> persistence.xml:
> 	<persistence-unit name="crs" transaction-type="JTA">
> 		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> 		<jta-data-source>java:comp/env/jdbc/crsDS</jta-data-source>
> 		
> 		<class>crs.bus.entity.Customer</class>
>   		<class>crs.bus.entity.Address</class>
> 		<class>crs.bus.entity.CustomerAddress</class>
> 				
> 		<properties>
>  			<property name="openjpa.TransactionMode" value="managed" />
> 			<property name="openjpa.ConnectionFactoryMode" value="managed" />
> 			<property name="openjpa.jdbc.DBDictionary" value="db2" />
> 		</properties>
> Entity:
> @Entity
> @Table(name="Customer", uniqueConstraints={@UniqueConstraint(columnNames="id")})
> public class Customer implements Serializable  {
> 	/** .*/
> 	private static final long serialVersionUID = 4011736633726247664L;
> 	@Id
> 	@GeneratedValue(strategy=GenerationType.IDENTITY)
> 	private long id;
> 	@Basic
> 	private String name;
> 	@OneToMany(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
> 	private List<CustomerAddress> addresses;
>     @Basic
>     private Date created = new Date();	
> ....
> }
> Exception:
> Caused by: <0.9.7-incubating nonfatal general error> org.apache.openjpa.persistence.PersistenceException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3784)
> 	at org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:373)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
> 	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:260)
> 	at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
> 	at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
> 	at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:876)
> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:834)
> 	at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:756)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
> 	at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2152)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:251)
> 	at org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
> 	at org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
> 	at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1219)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:987)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:796)
> 	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:766)
> 	at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
> 	at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:227)
> 	at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:269)
> 	at crs.bus.impl.query.EntityQueries.queryFromPersonName(EntityQueries.java:18)
> 	at crs.bus.impl.CustomerQueryBean.findByPersonName(CustomerQueryBean.java:39)
> 	at crs.bus.proxies.CustomerQueryProxy.findByPersonName(CustomerQueryProxy.java:15)
> 	at crs.service.servant.CustomerQueryServant.findByPersonName(CustomerQueryServant.java:26)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:615)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeMethod(JavaDispatcher.java:178)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeOperation(JavaDispatcher.java:141)
> 	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processRequestResponse(SoapRPCProcessor.java:448)
> 	at com.ibm.ws.webservices.engine.dispatchers.SoapRPCProcessor.processMessage(SoapRPCProcessor.java:413)
> 	at com.ibm.ws.webservices.engine.dispatchers.BasicDispatcher.processMessage(BasicDispatcher.java:134)
> 	at com.ibm.ws.webservices.engine.dispatchers.java.SessionDispatcher.invoke(SessionDispatcher.java:204)
> 	... 31 more
> Caused by: com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is closed.
> 	at com.ibm.db2.jcc.c.wf.mb(wf.java:3193)
> 	at com.ibm.db2.jcc.c.wf.j(wf.java:3164)
> 	at com.ibm.db2.jcc.c.wf.getTimestamp(wf.java:750)
> 	at com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getTimestamp(WSJdbcResultSet.java:1994)
> 	at org.apache.openjpa.lib.jdbc.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:166)
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.getTimestamp(DBDictionary.java:727)
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.getDate(DBDictionary.java:594)
> 	at org.apache.openjpa.jdbc.sql.ResultSetResult.getDateInternal(ResultSetResult.java:303)
> 	at org.apache.openjpa.jdbc.sql.ResultSetResult.getObjectInternal(ResultSetResult.java:384)
> 	at org.apache.openjpa.jdbc.sql.AbstractResult.getObject(AbstractResult.java:662)
> 	at org.apache.openjpa.jdbc.meta.strats.HandlerStrategies.loadDataStore(HandlerStrategies.java:205)
> 	at org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy.load(HandlerFieldStrategy.java:172)
> 	at org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:788)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:833)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:785)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:336)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
> 	... 63 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.