diff --git a/dev/com.ibm.ws.jpa.tests.jpa_32_fat/test-applications/jakartapersistence/src/io/openliberty/jpa/persistence/tests/models/Document.java b/dev/com.ibm.ws.jpa.tests.jpa_32_fat/test-applications/jakartapersistence/src/io/openliberty/jpa/persistence/tests/models/DocumentEntity.java similarity index 64% rename from dev/com.ibm.ws.jpa.tests.jpa_32_fat/test-applications/jakartapersistence/src/io/openliberty/jpa/persistence/tests/models/Document.java rename to dev/com.ibm.ws.jpa.tests.jpa_32_fat/test-applications/jakartapersistence/src/io/openliberty/jpa/persistence/tests/models/DocumentEntity.java index 742036b9081e..5ab7dd3cbf32 100644 --- a/dev/com.ibm.ws.jpa.tests.jpa_32_fat/test-applications/jakartapersistence/src/io/openliberty/jpa/persistence/tests/models/Document.java +++ b/dev/com.ibm.ws.jpa.tests.jpa_32_fat/test-applications/jakartapersistence/src/io/openliberty/jpa/persistence/tests/models/DocumentEntity.java @@ -11,12 +11,29 @@ import jakarta.persistence.Entity; import jakarta.persistence.Id; +import jakarta.persistence.Lob; @Entity -public class Document { +public class DocumentEntity { + @Id private Long id; - private String fileName; - private String title; - // Getters and setters + + @Lob + private String content; + + public DocumentEntity() {} + + public DocumentEntity(Long id, String content) { + this.id = id; + this.content = content; + } + + public Long getId() { + return id; + } + + public String getContent() { + return content; + } } diff --git a/dev/com.ibm.ws.jpa.tests.jpa_32_fat/test-applications/jakartapersistence/src/io/openliberty/jpa/persistence/tests/web/JakartaPersistenceServlet.java b/dev/com.ibm.ws.jpa.tests.jpa_32_fat/test-applications/jakartapersistence/src/io/openliberty/jpa/persistence/tests/web/JakartaPersistenceServlet.java index 15a81ed1ae43..1b116f16ef52 100644 --- a/dev/com.ibm.ws.jpa.tests.jpa_32_fat/test-applications/jakartapersistence/src/io/openliberty/jpa/persistence/tests/web/JakartaPersistenceServlet.java +++ b/dev/com.ibm.ws.jpa.tests.jpa_32_fat/test-applications/jakartapersistence/src/io/openliberty/jpa/persistence/tests/web/JakartaPersistenceServlet.java @@ -40,6 +40,7 @@ import io.openliberty.jpa.persistence.tests.models.AsciiCharacter; import io.openliberty.jpa.persistence.tests.models.Book; import io.openliberty.jpa.persistence.tests.models.DateTimeEntity; +import io.openliberty.jpa.persistence.tests.models.DocumentEntity; import io.openliberty.jpa.persistence.tests.models.Employee; import io.openliberty.jpa.persistence.tests.models.Event; import io.openliberty.jpa.persistence.tests.models.Organization; @@ -1879,6 +1880,38 @@ public void testCacheStoreMode_QueryOverridesEM_BypassOverridesRefresh() throws assertFalse(inCache); } + @Test + @SkipIfSysProp(DB_Oracle) // Reference issue: https://github.com/OpenLiberty/open-liberty/issues/33573 + public void testLobInsertAndRetrieve() throws Exception { + + try { + DocumentEntity e1 = new DocumentEntity(1L, ""); + + tx.begin(); + em.persist(e1); + tx.commit(); + + } catch (Exception e) { + if (tx.getStatus() == jakarta.transaction.Status.STATUS_ACTIVE) { + tx.rollback(); + } + throw e; + } + + try { + tx.begin(); + + DocumentEntity r1 = em.find(DocumentEntity.class, 1L); + + assertEquals("", r1.getContent()); + tx.commit(); + } catch (Exception e) { + if (tx.getStatus() == jakarta.transaction.Status.STATUS_ACTIVE) { + tx.rollback(); + } + throw e; + } + } /** * Utility method to drop all entities from table.