[
https://issues.apache.org/jira/browse/OPENJPA-276?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
George Hongell updated OPENJPA-276:
-----------------------------------
Attachment: JUEntityManagerFactoryTest.java
test case for issue 276
CREATE TABLE jpaquer.XYZ (id INTEGER NOT NULL, age INTEGER, firstName
VARCHAR(20), lastName VARCHAR(20), PRIMARY KEY (id));
> In a Resource Local Persistence Unit, when I create a second
> EntityManagerFactory, I lose the db2 database specific settings that I need
> (for ZOS DB2 V8) and which I got with the Entity Managers created from the
> first EntityManagerFactory that I created a
> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: OPENJPA-276
> URL: https://issues.apache.org/jira/browse/OPENJPA-276
> Project: OpenJPA
> Issue Type: Bug
> Environment: <1.0.0-SNAPSHOT-SNAPSHOT nonfatal user error>
> Reporter: George Hongell
> Fix For: 1.1.0
>
> Attachments: JUEntityManagerFactoryTest.java
>
>
> In a Resource Local Persistence Unit, when I create a second
> EntityManagerFactory, I lose the db2 database specific settings that I need
> (for ZOS DB2 V8) and which I got with the Entity Managers created from the
> first EntityManagerFactory that I created and now I get the default db2
> properties.
> NOTE that this only happens when I use the openjpa specific connection
> properties. When I use openjpa.ConnectionProperties with dbcp, it does not
> happen, I always get the correct properties.
> NOTE that this casting behavour also happens with join columns.
> In the following test case, the first EntityManagerFactory and EntityManager
> is created in setUp(). In testSQLQuery(), the same EntityManagerFactory is
> used to create a new EntityManager and the casting behavior of the int
> literal in the generated sql is correct (DECIMAL 31,0).
> 1640 mdd TRACE [main] openjpa.jdbc.SQL - <t 1094861122, conn 569516530>
> executing prepstmnt 489168168 SELECT t0.id, t0.age, t0.firstName, t0.lastName
> FROM jpaquer.XYZ t0 WHERE (CAST(t0.age AS DECIMAL(31,0)) = CAST(? AS
> DECIMAL(31,0))) optimize for 1 row [params=(long) 20]
> In testSQLQuery2(), a new EntityManagerFactory is used to create a new
> EntityManager and the casting behavior of the int literal in the generated
> sql is incorrect (BIGINT) which fails because the database does not support
> the bigint type.
> <1.0.0-SNAPSHOT-SNAPSHOT nonfatal user error>
> org.apache.openjpa.persistence.ArgumentException: DB2 SQL error: SQLCODE:
> -204, SQLSTATE: 42704, SQLERRMC: BIGINT {prepstmnt 325325668 SELECT t0.id,
> t0.age, t0.firstName, t0.lastName FROM jpaquer.XYZ t0 WHERE (CAST(t0.age AS
> BIGINT) = CAST(? AS BIGINT)) optimize for 1 row [params=(long) 20]}
> [code=-204, state=42704]
> <?xml version="1.0"?>
> <persistence xmlns="http://java.sun.com/xml/ns/persistence"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
> http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
> version="1.0">
> <persistence-unit name="mdd" transaction-type="RESOURCE_LOCAL">
> <class>com.ibm.ws.query.entities.annotated.Person</class>
> <properties>
>
> <!--
> <property name="openjpa.ConnectionDriverName"
> value="org.apache.commons.dbcp.BasicDataSource" />
> <property name="openjpa.ConnectionProperties"
> value="DriverClassName=com.ibm.db2.jcc.DB2Driver,Url=jdbc:db2://localhost:50000/myzdb28,Username=hongell,Password=hts24las"
> />
> -->
> <property name="openjpa.ConnectionDriverName"
> value="com.ibm.db2.jcc.DB2Driver"/>
> <property name="openjpa.ConnectionURL"
> value="jdbc:db2://localhost:50000/MYZDB28"/>
> <property name="openjpa.ConnectionUserName" value="hongell"/>
> <property name="openjpa.ConnectionPassword" value="las25tgl"/>
> <!--SynchronizeMappings must be turned off for zdb28 - currently no stored
> proc SQLCOLUMNS, SQLFOREIGNKEYS -->
> <!--
> <property name="openjpa.jdbc.SynchronizeMappings"
> value="buildSchema(ForeignKeys=true)" />
> -->
> <property name="openjpa.Log"
> value="Enhance=TRACE,Query=TRACE,SQL=TRACE" />
> </properties>
> </persistence-unit>
> </persistence>
> <1.0.0-SNAPSHOT-SNAPSHOT nonfatal user error>
> org.apache.openjpa.persistence.ArgumentException: DB2 SQL error: SQLCODE:
> -204, SQLSTATE: 42704, SQLERRMC: BIGINT {prepstmnt 325325668 SELECT t0.id,
> t0.age, t0.firstName, t0.lastName FROM jpaquer.XYZ t0 WHERE (CAST(t0.age AS
> BIGINT) = CAST(? AS BIGINT)) optimize for 1 row [params=(long) 20]}
> [code=-204, state=42704]
> at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:805)
> at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:766)
> at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:762)
> at
> org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:517)
> at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:230)
> at
> org.apache.openjpa.persistence.QueryImpl.getSingleResult(QueryImpl.java:292)
> at
> com.ibm.ws.query.tests.JUEntityManagerFactoryTest.testSQLQuery2(JUEntityManagerFactoryTest.java:70)
> 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 junit.framework.TestCase.runTest(TestCase.java:168)
> at junit.framework.TestCase.runBare(TestCase.java:134)
> at junit.framework.TestResult$1.protect(TestResult.java:110)
> at junit.framework.TestResult.runProtected(TestResult.java:128)
> at junit.framework.TestResult.run(TestResult.java:113)
> at junit.framework.TestCase.run(TestCase.java:124)
> at junit.framework.TestSuite.runTest(TestSuite.java:232)
> at junit.framework.TestSuite.run(TestSuite.java:227)
> at
> org.junit.internal.runners.OldTestClassRunner.run(OldTestClassRunner.java:35)
> at
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
> at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
> Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: DB2 SQL error:
> SQLCODE: -204, SQLSTATE: 42704, SQLERRMC: BIGINT {prepstmnt 325325668 SELECT
> t0.id, t0.age, t0.firstName, t0.lastName FROM jpaquer.XYZ t0 WHERE
> (CAST(t0.age AS BIGINT) = CAST(? AS BIGINT)) optimize for 1 row
> [params=(long) 20]} [code=-204, state=42704]
> at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:191)
> at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$800(LoggingConnectionDecorator.java:56)
> at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeQuery(LoggingConnectionDecorator.java:843)
> at
> org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:262)
> at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeQuery(JDBCStoreManager.java:1372)
> at
> org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:252)
> at org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:368)
> at org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:326)
> at
> org.apache.openjpa.jdbc.sql.LogicalUnion$UnionSelect.execute(LogicalUnion.java:407)
> at
> org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:218)
> at
> org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:208)
> at
> org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider.open(SelectResultObjectProvider.java:94)
> at org.apache.openjpa.kernel.QueryImpl.singleResult(QueryImpl.java:1275)
> at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1212)
> at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:987)
> at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:796)
> ... 25 more
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.