You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by cu...@apache.org on 2009/09/29 20:12:16 UTC
svn commit: r820050 - in /openjpa/trunk:
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/
openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/
Author: curtisr7
Date: Tue Sep 29 18:12:15 2009
New Revision: 820050
URL: http://svn.apache.org/viewvc?rev=820050&view=rev
Log:
OPENJPA-1224. Updated DBDictionary and AbstractDB2Dictionary to properly support java.math.BigDecimal.
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractDB2Dictionary.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/SQLBigDecimalIdEntity.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestSQLBigDecimalId.java
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractDB2Dictionary.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractDB2Dictionary.java?rev=820050&r1=820049&r2=820050&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractDB2Dictionary.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractDB2Dictionary.java Tue Sep 29 18:12:15 2009
@@ -29,7 +29,6 @@
public int varcharCastLength = 1000;
public AbstractDB2Dictionary() {
- numericTypeName = "DOUBLE";
bitTypeName = "SMALLINT";
smallintTypeName = "SMALLINT";
tinyintTypeName = "SMALLINT";
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java?rev=820050&r1=820049&r2=820050&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java Tue Sep 29 18:12:15 2009
@@ -404,7 +404,7 @@
public DBDictionary() {
fixedSizeTypeNameSet.addAll(Arrays.asList(new String[]{
"BIGINT", "BIT", "BLOB", "CLOB", "DATE", "DECIMAL", "DISTINCT",
- "DOUBLE", "FLOAT", "INTEGER", "JAVA_OBJECT", "NULL", "NUMERIC",
+ "DOUBLE", "FLOAT", "INTEGER", "JAVA_OBJECT", "NULL",
"OTHER", "REAL", "REF", "SMALLINT", "STRUCT", "TIME", "TIMESTAMP",
"TINYINT",
}));
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/SQLBigDecimalIdEntity.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/SQLBigDecimalIdEntity.java?rev=820050&r1=820049&r2=820050&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/SQLBigDecimalIdEntity.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/SQLBigDecimalIdEntity.java Tue Sep 29 18:12:15 2009
@@ -19,6 +19,8 @@
package org.apache.openjpa.persistence.identity;
import java.math.BigDecimal;
+
+import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
@@ -29,6 +31,7 @@
public class SQLBigDecimalIdEntity {
@Id
+ @Column(precision=15)
private BigDecimal id;
private int data;
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestSQLBigDecimalId.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestSQLBigDecimalId.java?rev=820050&r1=820049&r2=820050&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestSQLBigDecimalId.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/identity/TestSQLBigDecimalId.java Tue Sep 29 18:12:15 2009
@@ -19,16 +19,11 @@
package org.apache.openjpa.persistence.identity;
import java.math.BigDecimal;
+
import javax.persistence.EntityManager;
import junit.textui.TestRunner;
-import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
-import org.apache.openjpa.jdbc.sql.DBDictionary;
-import org.apache.openjpa.jdbc.sql.MySQLDictionary;
-import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
-import org.apache.openjpa.persistence.OpenJPAEntityManagerSPI;
-import org.apache.openjpa.persistence.test.SQLListenerTestCase;
import org.apache.openjpa.persistence.test.SingleEMFTestCase;
/**
@@ -48,17 +43,6 @@
SQLBigDecimalIdEntity e = new SQLBigDecimalIdEntity();
e.setId(decimal);
e.setData(1);
-
- // trigger schema definition
- JDBCConfiguration jdbccfg = (JDBCConfiguration)emf.getConfiguration();
- DBDictionary dict = jdbccfg.getDBDictionaryInstance();
- //currently BigDecimal is mapped to NUMERIC column type. This causes
- //truncation error from MySQL. Without knowing the implication of changing the
- //mapping of BigDecimal universally to DOUBLE, I will just change the mapping
- //for this test case.
- if (dict instanceof MySQLDictionary) {
- dict.numericTypeName = "DOUBLE";
- }
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
@@ -71,6 +55,29 @@
e = em.find(SQLBigDecimalIdEntity.class, decimal);
assertEquals(1, e.getData());
em.close();
+
+ }
+
+ public void testQuery() {
+ int data = 156;
+ BigDecimal decimal = new BigDecimal(1234);
+ SQLBigDecimalIdEntity e = new SQLBigDecimalIdEntity();
+ e.setId(decimal);
+ e.setData(data);
+
+ EntityManager em = emf.createEntityManager();
+ em.getTransaction().begin();
+ em.persist(e);
+ em.getTransaction().commit();
+
+ SQLBigDecimalIdEntity e2 =
+ (SQLBigDecimalIdEntity) em.createQuery("SELECT a FROM SQLBigDecimalIdEntity a WHERE a.data=" + data)
+ .getSingleResult();
+
+ // This would fail prior to OPENJPA-1224.
+ assertEquals(e, e2);
+ em.close();
+
}
public static void main(String[] args) {