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/18 21:31:41 UTC

svn commit: r786218 - in /openjpa/branches/1.1.x: 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: Thu Jun 18 19:31:41 2009
New Revision: 786218

URL: http://svn.apache.org/viewvc?rev=786218&view=rev
Log:
Fix for OpenJPA-525: committed for Amy Yang, from 1.1.x patch

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

Modified: openjpa/branches/1.1.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/ResultSetResult.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.1.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/ResultSetResult.java?rev=786218&r1=786217&r2=786218&view=diff
==============================================================================
--- openjpa/branches/1.1.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/ResultSetResult.java (original)
+++ openjpa/branches/1.1.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/ResultSetResult.java Thu Jun 18 19:31:41 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/branches/1.1.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/annotations/TestSerializedLobs.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.1.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/annotations/TestSerializedLobs.java?rev=786218&r1=786217&r2=786218&view=diff
==============================================================================
--- openjpa/branches/1.1.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/annotations/TestSerializedLobs.java (original)
+++ openjpa/branches/1.1.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/annotations/TestSerializedLobs.java Thu Jun 18 19:31:41 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();
+    }
 }