diff --git a/testsuite/src/test/java/org/hibernate/test/lob/BlobLocatorTest.java b/testsuite/src/test/java/org/hibernate/test/lob/BlobLocatorTest.java index fb2ff5951c63..cb0d51d9722c 100644 --- a/testsuite/src/test/java/org/hibernate/test/lob/BlobLocatorTest.java +++ b/testsuite/src/test/java/org/hibernate/test/lob/BlobLocatorTest.java @@ -71,6 +71,7 @@ public boolean appliesTo(Dialect dialect) { public void testBoundedBlobLocatorAccess() throws Throwable { byte[] original = buildRecursively( BLOB_SIZE, true ); byte[] changed = buildRecursively( BLOB_SIZE, false ); + byte[] empty = new byte[] {}; Session s = openSession(); s.beginTransaction(); @@ -121,11 +122,21 @@ public void testBoundedBlobLocatorAccess() throws Throwable { s.getTransaction().commit(); s.close(); + // test empty blob s = openSession(); s.beginTransaction(); entity = ( LobHolder ) s.get( LobHolder.class, entity.getId() ); assertEquals( BLOB_SIZE, entity.getBlobLocator().length() ); assertEquals( changed, extractData( entity.getBlobLocator() ) ); + entity.setBlobLocator( s.getLobHelper().createBlob( empty ) ); + s.getTransaction().commit(); + s.close(); + + s = openSession(); + s.beginTransaction(); + entity = ( LobHolder ) s.get( LobHolder.class, entity.getId() ); + assertEquals( empty.length, entity.getBlobLocator().length() ); + assertEquals( empty, extractData( entity.getBlobLocator() ) ); s.delete( entity ); s.getTransaction().commit(); s.close(); diff --git a/testsuite/src/test/java/org/hibernate/test/lob/ClobLocatorTest.java b/testsuite/src/test/java/org/hibernate/test/lob/ClobLocatorTest.java index 3a0962bb78cb..a0e01a6263f7 100644 --- a/testsuite/src/test/java/org/hibernate/test/lob/ClobLocatorTest.java +++ b/testsuite/src/test/java/org/hibernate/test/lob/ClobLocatorTest.java @@ -34,6 +34,7 @@ import org.hibernate.testing.junit.functional.DatabaseSpecificFunctionalTestCase; import org.hibernate.testing.junit.functional.FunctionalTestClassTestSuite; import org.hibernate.type.descriptor.java.DataHelper; +import org.hibernate.util.StringHelper; /** * Tests lazy materialization of data mapped by @@ -68,6 +69,7 @@ public boolean appliesTo(Dialect dialect) { public void testBoundedClobLocatorAccess() throws Throwable { String original = buildRecursively( CLOB_SIZE, 'x' ); String changed = buildRecursively( CLOB_SIZE, 'y' ); + String empty = ""; Session s = openSession(); s.beginTransaction(); @@ -118,11 +120,21 @@ public void testBoundedClobLocatorAccess() throws Throwable { s.getTransaction().commit(); s.close(); + // test empty clob s = openSession(); s.beginTransaction(); entity = ( LobHolder ) s.get( LobHolder.class, entity.getId() ); assertEquals( CLOB_SIZE, entity.getClobLocator().length() ); assertEquals( changed, extractData( entity.getClobLocator() ) ); + entity.setClobLocator( s.getLobHelper().createClob( empty ) ); + s.getTransaction().commit(); + s.close(); + + s = openSession(); + s.beginTransaction(); + entity = ( LobHolder ) s.get( LobHolder.class, entity.getId() ); + assertEquals( empty.length(), entity.getClobLocator().length() ); + assertEquals( empty, extractData( entity.getClobLocator() ) ); s.delete( entity ); s.getTransaction().commit(); s.close(); diff --git a/testsuite/src/test/java/org/hibernate/test/lob/LongByteArrayTest.java b/testsuite/src/test/java/org/hibernate/test/lob/LongByteArrayTest.java index 22c1ffa4d860..fb01b4308a43 100644 --- a/testsuite/src/test/java/org/hibernate/test/lob/LongByteArrayTest.java +++ b/testsuite/src/test/java/org/hibernate/test/lob/LongByteArrayTest.java @@ -45,6 +45,7 @@ public LongByteArrayTest(String name) { public void testBoundedLongByteArrayAccess() { byte[] original = buildRecursively( ARRAY_SIZE, true ); byte[] changed = buildRecursively( ARRAY_SIZE, false ); + byte[] empty = new byte[] {}; Session s = openSession(); s.beginTransaction(); @@ -83,6 +84,15 @@ public void testBoundedLongByteArrayAccess() { s.beginTransaction(); entity = ( LongByteArrayHolder ) s.get( LongByteArrayHolder.class, entity.getId() ); assertNull( entity.getLongByteArray() ); + entity.setLongByteArray( empty ); + s.getTransaction().commit(); + s.close(); + + s = openSession(); + s.beginTransaction(); + entity = ( LongByteArrayHolder ) s.get( LongByteArrayHolder.class, entity.getId() ); + assertEquals( empty.length, entity.getLongByteArray().length ); + assertEquals( empty, entity.getLongByteArray() ); s.delete( entity ); s.getTransaction().commit(); s.close(); diff --git a/testsuite/src/test/java/org/hibernate/test/lob/LongStringTest.java b/testsuite/src/test/java/org/hibernate/test/lob/LongStringTest.java index 6167139afb3c..ab37e3f965ce 100644 --- a/testsuite/src/test/java/org/hibernate/test/lob/LongStringTest.java +++ b/testsuite/src/test/java/org/hibernate/test/lob/LongStringTest.java @@ -43,6 +43,7 @@ public LongStringTest(String name) { public void testBoundedLongStringAccess() { String original = buildRecursively( LONG_STRING_SIZE, 'x' ); String changed = buildRecursively( LONG_STRING_SIZE, 'y' ); + String empty = ""; Session s = openSession(); s.beginTransaction(); @@ -81,6 +82,15 @@ public void testBoundedLongStringAccess() { s.beginTransaction(); entity = ( LongStringHolder ) s.get( LongStringHolder.class, entity.getId() ); assertNull( entity.getLongString() ); + entity.setLongString( empty ); + s.getTransaction().commit(); + s.close(); + + s = openSession(); + s.beginTransaction(); + entity = ( LongStringHolder ) s.get( LongStringHolder.class, entity.getId() ); + assertEquals( empty.length(), entity.getLongString().length() ); + assertEquals( empty, entity.getLongString() ); s.delete( entity ); s.getTransaction().commit(); s.close(); diff --git a/testsuite/src/test/java/org/hibernate/test/lob/SerializableTypeTest.java b/testsuite/src/test/java/org/hibernate/test/lob/SerializableTypeTest.java index dcdbf1f9ce86..8e7e450fb05f 100644 --- a/testsuite/src/test/java/org/hibernate/test/lob/SerializableTypeTest.java +++ b/testsuite/src/test/java/org/hibernate/test/lob/SerializableTypeTest.java @@ -34,6 +34,7 @@ public String getCacheConcurrencyStrategy() { public void testNewSerializableType() { final String initialPayloadText = "Initial payload"; final String changedPayloadText = "Changed payload"; + final String empty = ""; Session s = openSession(); s.beginTransaction(); @@ -72,6 +73,15 @@ public void testNewSerializableType() { s.beginTransaction(); holder = ( SerializableHolder ) s.get( SerializableHolder.class, holder.getId() ); assertNull( holder.getSerialData() ); + holder.setSerialData( new SerializableData( empty ) ); + s.getTransaction().commit(); + s.close(); + + s = openSession(); + s.beginTransaction(); + holder = ( SerializableHolder ) s.get( SerializableHolder.class, holder.getId() ); + serialData = ( SerializableData ) holder.getSerialData(); + assertEquals( empty, serialData.getPayload() ); s.delete( holder ); s.getTransaction().commit(); s.close();