diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 0c09fbd01..bf03d3b50 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -22,7 +22,7 @@ jobs:
uses: actions/setup-java@v2
with:
java-version: ${{ matrix.java_version }}
- distribution: 'adopt'
+ distribution: 'zulu'
- name: Maven cache
uses: actions/cache@v2
env:
diff --git a/.github/workflows/jdk-18-ea.yml b/.github/workflows/jdk-18-ea.yml
new file mode 100644
index 000000000..b814c77c9
--- /dev/null
+++ b/.github/workflows/jdk-18-ea.yml
@@ -0,0 +1,39 @@
+
+name: JDK 18-ea
+
+on:
+ workflow_dispatch:
+ schedule:
+ - cron: '30 6 * * 1,3,5'
+
+jobs:
+ build:
+
+ runs-on: ${{ matrix.os }}
+ permissions:
+ contents: read
+ packages: write
+ strategy:
+ fail-fast: false
+ matrix:
+ java_version: [18-ea]
+ os: [ubuntu-latest]
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Java
+ uses: actions/setup-java@v2
+ with:
+ java-version: ${{ matrix.java_version }}
+ distribution: 'zulu'
+ - name: Maven cache
+ uses: actions/cache@v2
+ env:
+ cache-name: maven-cache
+ with:
+ path:
+ ~/.m2
+ key: build-${{ env.cache-name }}
+ - name: Build with Maven
+ run: mvn package
+
diff --git a/.github/workflows/mariadb-10.6.yml b/.github/workflows/mariadb-10.6.yml
index 797e948ff..cae97ac27 100644
--- a/.github/workflows/mariadb-10.6.yml
+++ b/.github/workflows/mariadb-10.6.yml
@@ -1,7 +1,10 @@
name: MariaDB 10.6
-on: [workflow_dispatch]
+on:
+ workflow_dispatch:
+ schedule:
+ - cron: '10 7 * * 1,4'
jobs:
build:
diff --git a/.github/workflows/multi-jdk-build.yml b/.github/workflows/multi-jdk-build.yml
index badab5de6..f44cfac89 100644
--- a/.github/workflows/multi-jdk-build.yml
+++ b/.github/workflows/multi-jdk-build.yml
@@ -16,7 +16,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- java_version: [8, 11, 17]
+ java_version: [8.0.192, 8, 11.0.3, 11, 17]
os: [ubuntu-latest]
steps:
@@ -25,7 +25,7 @@ jobs:
uses: actions/setup-java@v2
with:
java-version: ${{ matrix.java_version }}
- distribution: 'adopt'
+ distribution: 'zulu'
- name: Maven cache
uses: actions/cache@v2
env:
diff --git a/.github/workflows/sqlserver-2017-latest.yml b/.github/workflows/sqlserver-2017-latest.yml
index 83649d080..6c72d8980 100644
--- a/.github/workflows/sqlserver-2017-latest.yml
+++ b/.github/workflows/sqlserver-2017-latest.yml
@@ -1,7 +1,10 @@
name: SqlServer 2017 latest
-on: [workflow_dispatch]
+on:
+ workflow_dispatch:
+ schedule:
+ - cron: '10 7 * * 2,5'
jobs:
build:
diff --git a/README.md b/README.md
index 2a6045969..30dc2c06b 100644
--- a/README.md
+++ b/README.md
@@ -2,11 +2,12 @@
[](https://maven-badges.herokuapp.com/maven-central/io.ebean/ebean)
[](https://github.com/ebean-orm/ebean/blob/master/LICENSE)
[](https://github.com/ebean-orm/ebean/actions/workflows/multi-jdk-build.yml)
+[](https://github.com/ebean-orm/ebean/actions/workflows/jdk-18-ea.yml)
[](https://github.com/ebean-orm/ebean/actions/workflows/postgres.yml)
[](https://github.com/ebean-orm/ebean/actions/workflows/mysql.yml)
-[](https://github.com/ebean-orm/ebean/actions/workflows/mariadb-10.6.yml)
-[](https://github.com/ebean-orm/ebean/actions/workflows/sqlserver-2017-latest.yml)
+[](https://github.com/ebean-orm/ebean/actions/workflows/mariadb-10.6.yml)
+[](https://github.com/ebean-orm/ebean/actions/workflows/sqlserver-2017-latest.yml)
# Sponsors
diff --git a/ebean-api/pom.xml b/ebean-api/pom.xml
index 1e711bc62..ca0b583c5 100644
--- a/ebean-api/pom.xml
+++ b/ebean-api/pom.xml
@@ -4,7 +4,7 @@
ebean-parent
io.ebean
- 12.13.2-SNAPSHOT
+ 12.14.1-SNAPSHOT
ebean api
@@ -27,7 +27,7 @@
io.avaje
avaje-config
- 1.5
+ 1.7
@@ -26,7 +26,7 @@
io.ebean
ebean-core
- 12.13.2-SNAPSHOT
+ 12.14.1-SNAPSHOT
provided
diff --git a/ebean-bom/pom.xml b/ebean-bom/pom.xml
index 417420c68..47f0f4ce4 100644
--- a/ebean-bom/pom.xml
+++ b/ebean-bom/pom.xml
@@ -4,7 +4,7 @@
ebean-parent
io.ebean
- 12.13.2-SNAPSHOT
+ 12.14.1-SNAPSHOT
ebean bom
@@ -71,88 +71,88 @@
io.ebean
ebean
- 12.13.2-SNAPSHOT
+ 12.14.1-SNAPSHOT
io.ebean
ebean-api
- 12.13.2-SNAPSHOT
+ 12.14.1-SNAPSHOT
io.ebean
ebean-core
- 12.13.2-SNAPSHOT
+ 12.14.1-SNAPSHOT
io.ebean
ebean-core-type
- 12.13.2-SNAPSHOT
+ 12.14.1-SNAPSHOT
io.ebean
ebean-ddl-generator
- 12.13.2-SNAPSHOT
+ 12.14.1-SNAPSHOT
io.ebean
ebean-externalmapping-api
- 12.13.2-SNAPSHOT
+ 12.14.1-SNAPSHOT
io.ebean
ebean-externalmapping-xml
- 12.13.2-SNAPSHOT
+ 12.14.1-SNAPSHOT
io.ebean
ebean-autotune
- 12.13.2-SNAPSHOT
+ 12.14.1-SNAPSHOT
io.ebean
ebean-querybean
- 12.13.2-SNAPSHOT
+ 12.14.1-SNAPSHOT
io.ebean
querybean-generator
- 12.13.2-SNAPSHOT
+ 12.14.1-SNAPSHOT
provided
io.ebean
kotlin-querybean-generator
- 12.13.2-SNAPSHOT
+ 12.14.1-SNAPSHOT
provided
io.ebean
ebean-test
- 12.13.2-SNAPSHOT
+ 12.14.1-SNAPSHOT
test
io.ebean
ebean-postgis
- 12.13.2-SNAPSHOT
+ 12.14.1-SNAPSHOT
io.ebean
ebean-redis
- 12.13.2-SNAPSHOT
+ 12.14.1-SNAPSHOT
diff --git a/ebean-core-type/pom.xml b/ebean-core-type/pom.xml
index 3d3e11a75..9eb1859c9 100644
--- a/ebean-core-type/pom.xml
+++ b/ebean-core-type/pom.xml
@@ -4,7 +4,7 @@
ebean-parent
io.ebean
- 12.13.2-SNAPSHOT
+ 12.14.1-SNAPSHOT
ebean-core-type
@@ -16,7 +16,7 @@
io.ebean
ebean-api
- 12.13.2-SNAPSHOT
+ 12.14.1-SNAPSHOT
diff --git a/ebean-core/pom.xml b/ebean-core/pom.xml
index b250f7a0a..89aa0e6e5 100644
--- a/ebean-core/pom.xml
+++ b/ebean-core/pom.xml
@@ -3,7 +3,7 @@
ebean-parent
io.ebean
- 12.13.2-SNAPSHOT
+ 12.14.1-SNAPSHOT
ebean-core
@@ -41,19 +41,19 @@
io.ebean
ebean-api
- 12.13.2-SNAPSHOT
+ 12.14.1-SNAPSHOT
io.ebean
ebean-core-type
- 12.13.2-SNAPSHOT
+ 12.14.1-SNAPSHOT
io.ebean
ebean-externalmapping-api
- 12.13.2-SNAPSHOT
+ 12.14.1-SNAPSHOT
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/PersistRequestBean.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/PersistRequestBean.java
index dc14a15ae..2fbf362ee 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/core/PersistRequestBean.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/PersistRequestBean.java
@@ -213,6 +213,11 @@ public final class PersistRequestBean extends PersistRequest implements BeanP
return beanDescriptor.docStoreMode(type, txnMode);
}
+ @Override
+ public boolean isCascade() {
+ return Flags.isRecurse(flags);
+ }
+
/**
* Return true if the draftDirty property should be set to true for this request.
*/
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/persist/DefaultPersister.java b/ebean-core/src/main/java/io/ebeaninternal/server/persist/DefaultPersister.java
index f2c56db74..701b76402 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/persist/DefaultPersister.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/persist/DefaultPersister.java
@@ -333,6 +333,13 @@ public final class DefaultPersister implements Persister {
* Recursively delete the bean. This calls back to the EbeanServer.
*/
private int deleteRecurse(EntityBean detailBean, Transaction t, DeleteMode deleteMode) {
+ return deleteRequest(createDeleteCascade(detailBean, t, deleteMode.persistType()));
+ }
+
+ /**
+ * Delete without being a cascade.
+ */
+ private int delete(EntityBean detailBean, Transaction t, DeleteMode deleteMode) {
return deleteRequest(createDeleteRequest(detailBean, t, deleteMode.persistType()));
}
@@ -560,7 +567,7 @@ public final class DefaultPersister implements Persister {
}
}
- private void deleteList(List> beanList, SpiTransaction t, DeleteMode deleteMode, boolean children) {
+ private void deleteCascade(List> beanList, SpiTransaction t, DeleteMode deleteMode, boolean children) {
if (children) {
t.depth(-1);
t.checkBatchEscalationOnCollection();
@@ -604,7 +611,7 @@ public final class DefaultPersister implements Persister {
for (Object id : ids) {
EntityBean bean = descriptor.createEntityBean();
descriptor.convertSetId(id, bean);
- int rowCount = deleteRecurse(bean, transaction, deleteMode);
+ int rowCount = delete(bean, transaction, deleteMode);
if (rowCount == -1) {
total = -1;
} else if (total != -1) {
@@ -656,7 +663,7 @@ public final class DefaultPersister implements Persister {
t.logSummary("-- DeleteById of " + descriptor.name() + " ids[" + idList + "] requires fetch of foreign key values");
}
List> beanList = server.findList(q, t);
- deleteList(beanList, t, deleteMode, false);
+ deleteCascade(beanList, t, deleteMode, false);
return beanList.size();
} else {
@@ -994,6 +1001,8 @@ public final class DefaultPersister implements Persister {
executeSqlUpdate(sqlDelete, t);
} else {
+ // TODO: Review first checking if many property is loaded and using the loaded beans
+ // ... and only using findIdsByParentId() when the many property isn't loaded
// Delete recurse using the Id values of the children
Object parentId = desc.getId(parentBean);
List