From caa8697701e5918b968e9477c1b8d36946aaf55a Mon Sep 17 00:00:00 2001 From: "robin.bygrave" Date: Tue, 22 Sep 2026 12:14:44 +1200 Subject: [PATCH] #3888 Tests for @DbArray using nullable false (various options) for List --- .../org/tests/model/array/EArrayBean.java | 37 +++++++++++++++++ .../tests/model/array/TestDbArray_basic.java | 40 +++++++++++++++++++ 2 files changed, 77 insertions(+) diff --git a/ebean-test/src/test/java/org/tests/model/array/EArrayBean.java b/ebean-test/src/test/java/org/tests/model/array/EArrayBean.java index b24ebaa79e..276f1ca2ed 100644 --- a/ebean-test/src/test/java/org/tests/model/array/EArrayBean.java +++ b/ebean-test/src/test/java/org/tests/model/array/EArrayBean.java @@ -5,6 +5,8 @@ import io.ebean.annotation.DbArray; import io.ebean.annotation.NotNull; +import jakarta.persistence.Basic; +import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.Id; import jakarta.persistence.Version; @@ -51,6 +53,17 @@ enum Status { @DbArray(nullable = false) List statuses = new ArrayList<>(); + @DbArray + @Column(nullable = false) + List progress = new ArrayList<>(); + + @DbArray(nullable = false) + List progressDbArrayNullableFalse = new ArrayList<>(); + + @DbArray + @Basic(optional = false) + List progressBasicOptionalFalse = new ArrayList<>(); + @DbArray List vcEnums = new ArrayList<>(); @@ -149,6 +162,30 @@ public void setStatuses(List statuses) { this.statuses = statuses; } + public List getProgress() { + return progress; + } + + public void setProgress(List progress) { + this.progress = progress; + } + + public List getProgressDbArrayNullableFalse() { + return progressDbArrayNullableFalse; + } + + public void setProgressDbArrayNullableFalse(List progressDbArrayNullableFalse) { + this.progressDbArrayNullableFalse = progressDbArrayNullableFalse; + } + + public List getProgressBasicOptionalFalse() { + return progressBasicOptionalFalse; + } + + public void setProgressBasicOptionalFalse(List progressBasicOptionalFalse) { + this.progressBasicOptionalFalse = progressBasicOptionalFalse; + } + public List getVcEnums() { return vcEnums; } diff --git a/ebean-test/src/test/java/org/tests/model/array/TestDbArray_basic.java b/ebean-test/src/test/java/org/tests/model/array/TestDbArray_basic.java index dcbbde8592..74f2e22dd6 100644 --- a/ebean-test/src/test/java/org/tests/model/array/TestDbArray_basic.java +++ b/ebean-test/src/test/java/org/tests/model/array/TestDbArray_basic.java @@ -1,6 +1,7 @@ package org.tests.model.array; import io.ebean.*; +import io.ebeaninternal.server.deploy.BeanProperty; import io.ebean.xtest.BaseTestCase; import io.ebean.xtest.ForPlatform; import io.ebean.xtest.IgnorePlatform; @@ -29,6 +30,12 @@ class TestDbArray_basic extends BaseTestCase { void insert() throws SQLException { DB.find(EArrayBean.class).delete(); bean.setName("some stuff"); + bean.getProgress().add(1); + bean.getProgress().add(2); + bean.getProgressDbArrayNullableFalse().add(3); + bean.getProgressDbArrayNullableFalse().add(4); + bean.getProgressBasicOptionalFalse().add(5); + bean.getProgressBasicOptionalFalse().add(6); assertThat(bean.getStatuses()).as("DbArray is auto initialised").isNotNull(); assertThat(bean.getIntEnums()).as("DbArray is auto initialised").isNotNull(); assertThat(bean.getUids()).as("DbArray is auto initialised").isNotNull(); @@ -68,6 +75,9 @@ void insert() throws SQLException { found = DB.find(EArrayBean.class, bean.getId()); assertThat(found.getPhoneNumbers()).containsExactly("4321", "9823"); + assertThat(found.getProgress()).containsExactly(1, 2); + assertThat(found.getProgressDbArrayNullableFalse()).containsExactly(3, 4); + assertThat(found.getProgressBasicOptionalFalse()).containsExactly(5, 6); assertThat(found.getDoubs()).hasSize(2); assertThat(found.getFloats()).hasSize(2); assertThat(found.getTimes()).hasSize(2); @@ -130,6 +140,36 @@ void insert() throws SQLException { update_when_dirty(); } + @Test + @IgnorePlatform(Platform.HANA) + void columnNullableFalseIsAppliedToDbArray() { + BeanProperty progress = spiEbeanServer() + .descriptor(EArrayBean.class) + .findProperty("progress"); + BeanProperty progressDbArrayNullableFalse = spiEbeanServer() + .descriptor(EArrayBean.class) + .findProperty("progressDbArrayNullableFalse"); + BeanProperty progressBasicOptionalFalse = spiEbeanServer() + .descriptor(EArrayBean.class) + .findProperty("progressBasicOptionalFalse"); + + assertThat(progress.isNullable()).isFalse(); + assertThat(progressDbArrayNullableFalse.isNullable()).isFalse(); + assertThat(progressBasicOptionalFalse.isNullable()).isFalse(); + + EArrayBean bean = new EArrayBean(); + bean.setName("non-null progress"); + bean.setProgress(List.of(10, 20)); + bean.setProgressDbArrayNullableFalse(List.of(30, 40)); + bean.setProgressBasicOptionalFalse(List.of(50, 60)); + DB.save(bean); + + EArrayBean found = DB.find(EArrayBean.class, bean.getId()); + assertThat(found.getProgress()).containsExactly(10, 20); + assertThat(found.getProgressDbArrayNullableFalse()).containsExactly(30, 40); + assertThat(found.getProgressBasicOptionalFalse()).containsExactly(50, 60); + } + //@Test//(dependsOnMethods = "insert") void json_parse_format() {