You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by de...@apache.org on 2009/06/24 01:03:42 UTC

svn commit: r787868 - in /openjpa/trunk: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/ResultSetResult.java openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/annotations/TestSerializedLobs.java

Author: dezzio
Date: Tue Jun 23 23:03:42 2009
New Revision: 787868

URL: http://svn.apache.org/viewvc?rev=787868&view=rev
Log:
OpenJPA-525: merged change 786218 from 1.1.x branch to trunk, fix for Oracle and null CLOBs.

Modified:
    openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/ResultSetResult.java
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/annotations/TestSerializedLobs.java

Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/ResultSetResult.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/ResultSetResult.java?rev=787868&r1=787867&r2=787868&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/ResultSetResult.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/ResultSetResult.java Tue Jun 23 23:03:42 2009
@@ -465,7 +465,7 @@
     protected String getStringInternal(Object obj, Joins joins)
         throws SQLException {
         if (obj instanceof Column && ((Column) obj).getType() == Types.CLOB)
-            return _dict.getClobString(_rs, ((Column) obj).getIndex());
+            return _dict.getClobString(_rs, findObject(obj, joins));
         return _dict.getString(_rs, ((Number) obj).intValue());
     }
 
@@ -489,6 +489,9 @@
         throws SQLException {
         if (obj instanceof Number)
             return obj;
+        // getStringInternal will take care the translation
+        if (obj instanceof Column && ((Column) obj).getType() == Types.CLOB)
+        	return obj;
         return Numbers.valueOf(findObject(obj, joins));
     }
 

Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/annotations/TestSerializedLobs.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/annotations/TestSerializedLobs.java?rev=787868&r1=787867&r2=787868&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/annotations/TestSerializedLobs.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/annotations/TestSerializedLobs.java Tue Jun 23 23:03:42 2009
@@ -134,4 +134,36 @@
             assertEquals('a' + (i % 24), str.charAt(i));
         em.close();
     }
+
+    public void testNullableClob() throws Exception {
+        EntityManager em = emf.createEntityManager();
+        em.getTransaction().begin();
+
+        AnnoTest1 pc = new AnnoTest1(1);
+        em.persist(pc);
+        em.getTransaction().commit();
+        em.close();
+
+        em = emf.createEntityManager();
+        pc = em.find(AnnoTest1.class, new Long(1));
+        String str = pc.getClob();
+        assertNull(str);
+        em.close();
+    }
+
+    public void testNullableBlob() throws Exception {
+        EntityManager em = emf.createEntityManager();
+        em.getTransaction().begin();
+
+        AnnoTest1 pc = new AnnoTest1(1);
+        em.persist(pc);
+        em.getTransaction().commit();
+        em.close();
+
+        em = emf.createEntityManager();
+        pc = em.find(AnnoTest1.class, new Long(1));
+        byte[] bl = pc.getBlob();
+        assertNull(bl);
+        em.close();
+    }
 }