Compare commits

...
Author SHA1 Message Date
Rob Bygrave 714bbadbc0 [maven-release-plugin] prepare release ebean-parent-13.11.4 2023-02-13 13:34:14 +13:00
Rob Bygrave 9e811e9aef bump ebean-agent to 13.11.4 2023-02-13 13:25:33 +13:00
Rob Bygrave f97dcb60c0 Improve test only, QCustomerTest using AttributeConverter 2023-02-13 08:08:16 +13:00
Rob Bygrave 65c76cb2c0 Fix test to support SqlServer using sequences 2023-02-10 14:22:11 +13:00
Rob Bygrave 874427dac1 Fix test to also support Postgres ANY 2023-02-10 14:19:35 +13:00
Rob BygraveandGitHub 1176c2e97a Merge pull request #2962 from ebean-orm/feature/2961
#2961 - Followup for #2952 - @OneToMany + orphanRemoval + @SoftDelete + non-BeanCollection collection results in hard deletes
2023-02-10 13:10:01 +13:00
Rob Bygrave 44e0585fb7 #2961 - Followup for #2952 - @OneToMany + orphanRemoval + @SoftDelete + non-BeanCollection collection results in hard deletes
As noted in comments in #2952

In the internals of SaveManyBeans we have:

- BUG: the deleteByParentId is hard delete and does not care for soft delete
- YUK: internally we have 3 ways of performing the orphan removal when we really want 2

This change fixes the BUG and fixes the YUK. It does this by removing the special case at: https://github.com/ebean-orm/ebean/blob/ebean-parent-13.11.3/ebean-core/src/main/java/io/ebeaninternal/server/persist/SaveManyBeans.java#L347-L350 ... and replacing it with the more common orphan removal code used when we do not have BeanCollection modifications.

The result of this change is that in SaveManyBeans internals we get back to have 2 ways to remove orphans.

- A BeanCollection with modifications: Orphans explicitly deleted using the known elements removed from the collection
- All other cases: Orphans as everything NOT in the collection that is going to be updated
2023-02-10 13:08:44 +13:00
Rob BygraveandGitHub 889c0f12e0 Merge pull request #2960 from ebean-orm/buchtajz-one2many_setArraylist
Fix for @OneToMany orphanRemoval not occurring for #2952 #2953
2023-02-10 13:01:55 +13:00
Rob Bygrave 0135263dbd Style only for SaveManyBeans switching order in if/else 2023-02-09 23:45:27 +13:00
Rob Bygrave 564194042b No effective change, BeanCollectionUtil perform the instanceof Collection before instanceof Map check 2023-02-09 23:44:13 +13:00
Rob Bygrave 244d45674a #2952 #2953 - Fix for @OneToMany orphanRemoval not occurring
orphanRemoval was not occurring when a loaded bean had a collection
replaced by a new BeanCollection (as opposed to a vanilla collection
like java.util.ArrayList).

Json marshalling a collection puts beans into BeanCollection and this
is part of the test that reproduced this issue.
2023-02-09 23:29:13 +13:00
Rob Bygrave 4722f10f5e Bump versions after release 2023-02-07 22:46:08 +13:00
Rob Bygrave 3f5140e7f3 [maven-release-plugin] prepare for next development iteration 2023-02-07 22:10:29 +13:00
Rob Bygrave 43dec17d08 [maven-release-plugin] prepare release ebean-parent-13.11.3 2023-02-07 22:10:16 +13:00
Rob Bygrave f1ee45d7d1 Bump ebean-agent to 13.11.3 2023-02-07 22:06:16 +13:00
Rob Bygrave 3263e7bfc3 #2959 - Improve logging for lazy loading error due to "markAsDeleted" 2023-02-07 22:05:34 +13:00
Rob Bygrave e01f19b3aa Merge branch 'one2many_setArraylist' of github.com:buchtajz/ebean into buchtajz-one2many_setArraylist 2023-02-07 20:09:01 +13:00
Rob Bygrave 20f6a659fe #2959 - Improve logging for lazy loading error due to "markAsDeleted" 2023-02-07 19:59:33 +13:00
Michal Buchtík 09fe923770 Merge remote-tracking branch 'origin/one2many_setArraylist' into one2many_setArraylist 2023-02-05 09:28:11 +01:00
buchtajzandGitHub e6f5e42c2d Merge branch 'ebean-orm:master' into one2many_setArraylist 2023-02-05 09:25:29 +01:00
Rob Bygrave 5150ecba62 #2948 - SoftDelete entities are hard deleted on orphan removal 2023-02-02 23:15:22 +13:00
Rob Bygrave 978b1dbe02 Merge branch 'master' of github.com:ebean-orm/ebean 2023-02-02 23:06:49 +13:00
Rob Bygrave 9813703ce5 Merge branch 'Ichtil-hard_delete_instead_of_soft_delete_2' 2023-02-02 23:03:28 +13:00
Rob Bygrave 09001e80b5 #2948 - SoftDelete entities are hard deleted on orphan removal 2023-02-02 23:02:44 +13:00
Rob BygraveandGitHub 4aa3ca6d95 Merge pull request #2941 from FOCONIS/expressionlist-clear
NEW: ExpressionList has clear() method
2023-02-02 01:13:28 +13:00
Rob BygraveandGitHub 5ec8469ddc Merge pull request #2940 from FOCONIS/fix-bom
FIX: Removed non existent modules from BOM
2023-02-02 00:42:43 +13:00
Michal Buchtík 39099bbcc9 print sql 2023-01-31 23:01:52 +01:00
Michal Buchtík cb2ca0de11 setArrayListDoInsertInsteadUpdate 2023-01-30 23:47:18 +01:00
Jan Klička b25233b0b9 Merge branch 'master' into hard_delete_instead_of_soft_delete_2
# Conflicts:
#	ebean-test/pom.xml
2023-01-27 16:28:03 +01:00
Jan Klička 743f1b10e3 #2948 2023-01-27 16:17:01 +01:00
Roland Praml 371f50fb4d NEW: ExpressionList has clear() method 2023-01-23 11:33:29 +01:00
Roland Praml a3be2041c8 FIX: Removed non existent modules from BOM 2023-01-23 11:31:45 +01:00
Rob Bygrave 09a831f2d6 Bump versions after release 2023-01-21 22:35:40 +13:00
Rob Bygrave 27d9e03691 [maven-release-plugin] prepare for next development iteration 2023-01-21 20:37:02 +13:00
71 changed files with 556 additions and 326 deletions
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<name>ebean-clickhouse</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-clickhouse</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<name>ebean-cockroach</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-postgres</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<name>ebean-db2</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-db2</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<name>ebean-h2</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-h2</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<name>ebean-hana</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-hana</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<name>ebean-mariadb</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-mariadb</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<name>ebean-mysql</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-mysql</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<name>ebean-nuodb</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-nuodb</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<name>ebean-oracle</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-oracle</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<name>ebean-postgres</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-postgres</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<name>ebean-sqlite</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-sqlite</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<name>ebean-sqlserver</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-sqlserver</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<name>ebean-yugabyte</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-postgres</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+9 -9
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<name>ebean (all platforms)</name>
@@ -16,31 +16,31 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-joda-time</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-jackson-jsonnode</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-jackson-mapper</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
@@ -53,18 +53,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-all</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+1 -1
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<artifactId>composites</artifactId>
+1 -1
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<name>ebean api</name>
@@ -1730,4 +1730,8 @@ public interface ExpressionList<T> {
*/
ExpressionList<T> endNot();
/**
* Clears the current expression list.
*/
ExpressionList<T> clear();
}
@@ -725,7 +725,7 @@ public final class InterceptReadWrite implements EntityBeanIntercept {
loader.loadBean(this);
if (lazyLoadFailure) {
// failed when lazy loading this bean
throw new EntityNotFoundException("Lazy loading failed on type:" + owner.getClass().getName() + " id:" + ownerId + " - Bean has been deleted.");
throw new EntityNotFoundException("Lazy loading failed on type:" + owner.getClass().getName() + " id:" + ownerId + " - Bean has been deleted. BeanLoader: " + beanLoader);
}
// bean should be loaded and intercepting now. setLoaded() has
// been called by the lazy loading mechanism
+4 -4
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<!-- <parent>-->
<!-- <groupId>org.avaje</groupId>-->
@@ -14,7 +14,7 @@
<scm>
<developerConnection>scm:git:git@github.com:ebean-orm/ebean.git</developerConnection>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
<name>ebean autotune</name>
@@ -26,7 +26,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>provided</scope>
</dependency>
@@ -55,7 +55,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-h2</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
+29 -47
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<name>ebean bom</name>
@@ -89,192 +89,174 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core-type</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-joda-time</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-jackson-jsonnode</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-jackson-mapper</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-ddl-generator</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-externalmapping-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-externalmapping-xml</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-autotune</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>querybean-generator</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>kotlin-querybean-generator</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-test</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-postgis</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-redis</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<!-- platforms -->
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-all</artifactId>
<version>13.11.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-clickhouse</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-db2</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-h2</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-hana</artifactId>
<version>13.11.2</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-hsqldb</artifactId>
<version>13.11.2-SNAPSHOT</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-mariadb</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-mysql</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-nuodb</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-oracle</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-postgres</artifactId>
<version>13.11.2</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-sqlanywhere</artifactId>
<version>13.11.2-SNAPSHOT</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-sqlite</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-sqlserver</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
+2 -2
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<artifactId>ebean-core-type</artifactId>
@@ -16,7 +16,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
+8 -8
View File
@@ -3,7 +3,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<artifactId>ebean-core</artifactId>
@@ -15,14 +15,14 @@
<scm>
<developerConnection>scm:git:git@github.com:ebean-orm/ebean.git</developerConnection>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
<dependencies>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
@@ -46,13 +46,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core-type</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-externalmapping-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
@@ -143,21 +143,21 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-h2</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-postgres</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-sqlserver</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
@@ -9,4 +9,5 @@ public final class CoreLog {
public static final System.Logger log = AppLog.getLogger("io.ebean.core");
public static final System.Logger internal = AppLog.getLogger("io.ebean.internal");
public static final System.Logger markedAsDeleted = AppLog.getLogger("io.ebean.MarkedAsDeleted");
}
@@ -6,10 +6,7 @@ import io.ebeaninternal.api.SpiQuery.Mode;
import io.ebeaninternal.server.core.OrmQueryRequest;
import io.ebeaninternal.server.deploy.BeanDescriptor;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.*;
/**
* Request for loading ManyToOne and OneToOne relationships.
@@ -103,7 +100,7 @@ public final class LoadBeanRequest extends LoadRequest {
/**
* Load the beans into the L2 cache if that is requested and check for load failures due to deletes.
*/
public void postLoad(List<?> list) {
public Result postLoad(List<?> list) {
Set<Object> loadedIds = new HashSet<>();
BeanDescriptor<?> desc = loadBuffer.descriptor();
// collect Ids and maybe load bean cache
@@ -114,6 +111,7 @@ public final class LoadBeanRequest extends LoadRequest {
desc.cacheBeanPutAll(list);
}
if (lazyLoadProperty != null) {
Set<Object> missedIds = new HashSet<>();
for (EntityBeanIntercept ebi : batch) {
// check if the underlying row in DB was deleted. Mark the bean as 'failed' if
// necessary but allow processing to continue until it is accessed by client code
@@ -121,8 +119,36 @@ public final class LoadBeanRequest extends LoadRequest {
if (!loadedIds.contains(id)) {
// assume this is logically deleted (hence not found)
desc.markAsDeleted(ebi.getOwner());
missedIds.add(id);
}
}
return new Result(loadedIds, missedIds);
}
return EMPTY_RESULT;
}
static final Result EMPTY_RESULT = new Result(Collections.emptySet(),Collections.emptySet());
public static class Result {
private final Set<Object> loadedIds;
private final Set<Object> missedIds;
Result(Set<Object> loadedIds, Set<Object> missedIds) {
this.loadedIds = loadedIds;
this.missedIds = missedIds;
}
public boolean markedDeleted() {
return !missedIds.isEmpty();
}
public Set<Object> missedIds() {
return missedIds;
}
public Set<Object> loadedIds() {
return loadedIds;
}
}
}
@@ -14,10 +14,11 @@ import io.ebeaninternal.server.deploy.BeanPropertyAssocMany;
import io.ebeaninternal.server.transaction.DefaultPersistenceContext;
import javax.persistence.EntityNotFoundException;
import java.text.MessageFormat;
import java.util.List;
import java.util.Set;
import static java.lang.System.Logger.Level.DEBUG;
import static java.lang.System.Logger.Level.*;
/**
* Helper to handle lazy loading and refreshing of beans.
@@ -137,8 +138,12 @@ final class DefaultBeanLoader {
SpiQuery<?> query = server.createQuery(loadRequest.beanType());
loadRequest.configureQuery(query, idList);
List<?> list = executeQuery(loadRequest, query);
loadRequest.postLoad(list);
final List<?> list = executeQuery(loadRequest, query);
final LoadBeanRequest.Result result = loadRequest.postLoad(list);
if (result.markedDeleted() && CoreLog.markedAsDeleted.isLoggable(DEBUG)) {
String msg = MessageFormat.format("Loaded bean marked as deleted for {0} missedIds:{1} loadedIds:{2} sql:{3} list:{4}", loadRequest.beanType(), result.missedIds(), result.loadedIds(), query.getGeneratedSql(), list);
CoreLog.markedAsDeleted.log(DEBUG, msg, new RuntimeException("LoadBeanRequest markedAsDeleted"));
}
}
/**
@@ -38,13 +38,10 @@ public final class BeanCollectionUtil {
// returns a collection of beans
return bc.getActualEntries();
}
if (o instanceof Map<?, ?>) {
// yes, we want the entrySet (to set the keys)
return ((Map<?, ?>) o).entrySet();
} else if (o instanceof Collection<?>) {
if (o instanceof Collection<?>) {
return ((Collection<?>) o);
} else if (o instanceof Map<?, ?>) {
return ((Map<?, ?>) o).entrySet();
}
throw new PersistenceException("expecting a Map or Collection but got " + o.getClass().getName());
}
@@ -1268,4 +1268,10 @@ public class DefaultExpressionList<T> implements SpiExpressionList<T> {
}
return null;
}
@Override
public ExpressionList<T> clear() {
list.clear();
return this;
}
}
@@ -1068,4 +1068,9 @@ final class JunctionExpression<T> implements SpiJunction<T>, SpiExpression, Expr
}
return null;
}
@Override
public ExpressionList<T> clear() {
return exprList.clear();
}
}
@@ -861,7 +861,7 @@ public final class DefaultPersister implements Persister {
SpiTransaction t = request.transaction();
EntityBean orphanForRemoval = request.importedOrphanForRemoval();
if (orphanForRemoval != null) {
delete(orphanForRemoval, request.transaction(), true);
delete(orphanForRemoval, request.transaction(), false);
}
// exported ones with cascade save
@@ -1079,7 +1079,7 @@ public final class DefaultPersister implements Persister {
private void deleteOrphan(PersistRequestBean<?> request, BeanPropertyAssocOne<?> prop) {
Object origValue = request.getOrigValue(prop);
if (origValue instanceof EntityBean) {
delete((EntityBean) origValue, request.transaction(), true);
delete((EntityBean) origValue, request.transaction(), false);
}
}
@@ -35,8 +35,9 @@ final class SaveManyBeans extends SaveManyBase {
private final boolean untouchedBeanCollection;
private final Collection<?> collection;
private final boolean hasOrderColumn;
private final boolean forcedUpdate;
private int sortOrder;
private boolean insertAllChildren;
private boolean forceOrphanRemoval;
SaveManyBeans(DefaultPersister persister, boolean insertedParent, BeanPropertyAssocMany<?> many, EntityBean parentBean, PersistRequestBean<?> request) {
super(persister, insertedParent, many, parentBean, request);
@@ -49,6 +50,7 @@ final class SaveManyBeans extends SaveManyBase {
this.untouchedBeanCollection = untouchedBeanCollection();
this.collection = cascade ? BeanCollectionUtil.getActualEntries(value) : null;
this.hasOrderColumn = many.hasOrderColumn();
this.forcedUpdate = request.isForcedUpdate();
}
/**
@@ -127,10 +129,8 @@ final class SaveManyBeans extends SaveManyBase {
targetDescriptor.preAllocateIds(collection.size());
}
if (forcedUpdateOrphanRemoval()) {
// collect the Id's (to exclude from deleteManyDetails)
List<Object> detailIds = collectIds(collection, targetDescriptor, isMap);
// deleting missing children - children not in our collected detailIds
persister.deleteManyDetails(transaction, many.descriptor(), parentBean, many, detailIds, deleteMode);
// deleting orphans, anything not in our detailsIds
persister.deleteManyDetails(transaction, many.descriptor(), parentBean, many, detailIds(), deleteMode);
}
transaction.depth(+1);
saveAllBeans(orderColumn);
@@ -141,7 +141,7 @@ final class SaveManyBeans extends SaveManyBase {
}
private boolean forcedUpdateOrphanRemoval() {
return !insertedParent && many.isOrphanRemoval() && request.isForcedUpdate();
return !insertedParent && many.isOrphanRemoval() && (forceOrphanRemoval || forcedUpdate);
}
private void saveAllBeans(final BeanProperty orderColumn) {
@@ -177,10 +177,6 @@ final class SaveManyBeans extends SaveManyBase {
skipSavingThisBean = false;
// set the parent bean to detailBean
many.setJoinValuesToChild(parentBean, detail, mapKeyValue);
} else if (insertAllChildren) {
ebi.setNew();
skipSavingThisBean = false;
many.setJoinValuesToChild(parentBean, detail, mapKeyValue);
} else {
skipSavingThisBean = saveRecurseSkippable;
}
@@ -215,12 +211,10 @@ final class SaveManyBeans extends SaveManyBase {
}
/**
* Collect the Id values of the details to remove 'missing children' for stateless updates.
* Return the Id values of beans we know are being updated (any others are orphans)
*/
private List<Object> collectIds(Collection<?> collection, BeanDescriptor<?> targetDescriptor, boolean isMap) {
List<Object> detailIds = new ArrayList<>();
// stateless update with deleteMissingChildren so first
// collect the Id values to remove the 'missing children'
private List<Object> detailIds() {
final var detailIds = new ArrayList<>();
for (Object detailBean : collection) {
if (isMap) {
detailBean = ((Map.Entry<?, ?>) detailBean).getValue();
@@ -228,8 +222,10 @@ final class SaveManyBeans extends SaveManyBase {
if (detailBean instanceof EntityBean) {
Object id = targetDescriptor.id(detailBean);
if (!isNullOrZero(id)) {
// remember the Id (other details not in the collection) will be removed
detailIds.add(id);
if (forcedUpdate || !((EntityBean) detailBean)._ebean_getIntercept().isNew()) {
// Id of bean that will be updated, exclude it from orphan removal
detailIds.add(id);
}
}
}
}
@@ -261,8 +257,7 @@ final class SaveManyBeans extends SaveManyBase {
}
private void saveAssocManyIntersection(boolean queue) {
boolean forcedUpdate = request.isForcedUpdate();
boolean vanillaCollection = !(value instanceof BeanCollection<?>);
final boolean vanillaCollection = !(value instanceof BeanCollection<?>);
if (vanillaCollection || forcedUpdate) {
// delete all intersection rows and then treat all
// beans in the collection as additions
@@ -321,7 +316,7 @@ final class SaveManyBeans extends SaveManyBase {
CoreLog.log.log(System.Logger.Level.WARNING, m);
} else {
if (!many.hasImportedId(otherBean)) {
throw new PersistenceException("ManyToMany bean " + otherBean + " does not have an Id value.");
throw new PersistenceException("ManyToMany bean does not have an Id value? " + otherBean);
} else {
// build a intersection row for 'insert'
IntersectionRow intRow = many.buildManyToManyMapBean(parentBean, otherBean, publish);
@@ -344,10 +339,7 @@ final class SaveManyBeans extends SaveManyBase {
return;
}
if (!(value instanceof BeanCollection<?>)) {
if (!forcedUpdateOrphanRemoval() && (!insertedParent && cascade && isChangedProperty())) {
persister.addToFlushQueue(many.deleteByParentId(request.beanId(), null), transaction, 0);
insertAllChildren = true;
}
forceOrphanRemoval = !insertedParent && isChangedProperty();
} else {
BeanCollection<?> c = (BeanCollection<?>) value;
Set<?> modifyRemovals = c.getModifyRemovals();
@@ -359,7 +351,9 @@ final class SaveManyBeans extends SaveManyBase {
if (!hasOrderColumn) {
c.modifyReset();
}
if (modifyRemovals != null && !modifyRemovals.isEmpty()) {
if (modifyRemovals == null || modifyRemovals.isEmpty()) {
forceOrphanRemoval = !insertedParent && isChangedProperty();
} else {
for (Object removedBean : modifyRemovals) {
if (removedBean instanceof EntityBean) {
EntityBean eb = (EntityBean) removedBean;
@@ -5,6 +5,7 @@ import io.ebean.bean.EntityBean;
import io.ebean.bean.EntityBeanIntercept;
import io.ebean.bean.PersistenceContext;
import io.ebean.core.type.ScalarDataReader;
import io.ebeaninternal.api.CoreLog;
import io.ebeaninternal.api.SpiQuery;
import io.ebeaninternal.api.SpiQuery.Mode;
import io.ebeaninternal.server.deploy.DbReadContext;
@@ -14,6 +15,8 @@ import io.ebeaninternal.server.deploy.id.IdBinder;
import java.sql.SQLException;
import java.util.Map;
import static java.lang.System.Logger.Level.DEBUG;
/**
* Normal bean included in the query.
*/
@@ -211,6 +214,9 @@ class SqlTreeLoadBean implements SqlTreeLoad {
contextBean = ((STreePropertyAssocOne)nodeBeanProp).valueAsEntityBean(parentBean);
if (contextBean != null) {
desc.markAsDeleted(contextBean);
if (CoreLog.markedAsDeleted.isLoggable(DEBUG)) {
CoreLog.markedAsDeleted.log(DEBUG, contextBean + " contextBean markedAsDeleted", new RuntimeException(contextBean + " contextBean markedAsDeleted"));
}
}
}
}
@@ -99,6 +99,14 @@ public class DefaultExpressionListTest extends BaseExpressionTest {
.isSameByBind(spi(exp().eq("a", 10).eq("b", 20)))).isFalse();
}
@Test
public void isSameWithClear() {
DefaultExpressionList<?> exp1 = spi(exp().eq("a", 10).eq("b", 20).clear().eq("c", 30));
DefaultExpressionList<?> exp2 = spi(exp().eq("c", 30));
same(exp1, exp2);
assertThat(exp1.isSameByBind(exp2)).isTrue();
}
@SuppressWarnings("unchecked")
@Test
void copy() {
+4 -4
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<artifactId>ebean-csv-reader</artifactId>
@@ -14,21 +14,21 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-test</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
+4 -4
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<name>ebean ddl generation</name>
@@ -28,14 +28,14 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core-type</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>provided</scope>
</dependency>
@@ -58,7 +58,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-all</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
+1 -1
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<name>ebean external mapping api</name>
+6 -6
View File
@@ -4,12 +4,12 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<scm>
<developerConnection>scm:git:git@github.com:ebean-orm/ebean.git</developerConnection>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
<name>ebean external mapping xml</name>
@@ -21,7 +21,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-externalmapping-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
@@ -54,21 +54,21 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-h2</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-ddl-generator</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
+2 -2
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<artifactId>ebean-jackson-jsonnode</artifactId>
@@ -14,7 +14,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core-type</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>provided</scope>
</dependency>
+2 -2
View File
@@ -3,7 +3,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -14,7 +14,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core-type</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>provided</scope>
</dependency>
+2 -2
View File
@@ -3,7 +3,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -14,7 +14,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core-type</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>provided</scope>
</dependency>
+3 -3
View File
@@ -6,7 +6,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2-SNAPSHOT</version>
<version>13.11.4-SNAPSHOT</version>
</parent>
<artifactId>ebean-kotlin</artifactId>
@@ -28,7 +28,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2-SNAPSHOT</version>
<version>13.11.4-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
@@ -50,7 +50,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-test</artifactId>
<version>13.11.2-SNAPSHOT</version>
<version>13.11.4-SNAPSHOT</version>
<scope>test</scope>
</dependency>
+4 -4
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<name>ebean postgis</name>
@@ -22,14 +22,14 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-postgres</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<!-- provided scope -->
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>provided</scope>
</dependency>
@@ -65,7 +65,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-test</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
+5 -5
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<name>ebean querybean</name>
@@ -17,7 +17,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>provided</scope>
</dependency>
@@ -63,21 +63,21 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-ddl-generator</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>querybean-generator</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-test</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
@@ -857,10 +857,20 @@ public class QCustomerTest {
cust.setName("testFetchByScalarValue");
cust.setPhoneNumber(new PhoneNumber("+18005555555"));
cust.save();
assertThat(new QCustomer()
var customer = new QCustomer()
.name.eq("testFetchByScalarValue")
.phoneNumber.eq(new PhoneNumber("+18005555555"))
.findOne()).isNotNull();
.findOne();
assertThat(customer).isNotNull();
var customers = new QCustomer()
.name.eq("testFetchByScalarValue")
.phoneNumber.eq(new PhoneNumber("+18005555555"))
.findList();
assertThat(customers).hasSize(1);
}
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<artifactId>ebean-redis</artifactId>
@@ -22,35 +22,35 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>querybean-generator</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-test</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
+8 -8
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<name>ebean test</name>
@@ -28,20 +28,20 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-h2</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-ddl-generator</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
@@ -105,28 +105,28 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-joda-time</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-jackson-jsonnode</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-jackson-mapper</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-all</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
@@ -1,6 +1,7 @@
package org.tests.cascade;
import io.ebean.DB;
import io.ebean.test.LoggedSql;
import io.ebean.xtest.BaseTestCase;
import org.junit.jupiter.api.Test;
@@ -9,6 +10,7 @@ import java.util.List;
import java.util.stream.Collectors;
import static java.util.Objects.requireNonNull;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
class TestOrphanCollectionReplacement extends BaseTestCase {
@@ -41,7 +43,16 @@ class TestOrphanCollectionReplacement extends BaseTestCase {
updatedRoles.addAll(List.of(role));
fetchedParent.setChildren(updatedRoles);
LoggedSql.start();
DB.save(fetchedParent);
var sql = LoggedSql.stop();
if (isH2() || isPostgresCompatible()) { // using deleted=true vs deleted=1
assertThat(sql).hasSize(4);
assertThat(sql.get(0)).contains("update coone_many set deleted=true where coone_id = ? and not ( id ");
assertThat(sql.get(1)).contains(" -- bind(");
assertThat(sql.get(2)).contains("insert into coone_many (coone_id, name, deleted) values (?,?,?)");
assertThat(sql.get(3)).contains(" -- bind(");
}
}
COOne fetchedUser2 = DB.find(COOne.class, parentId);
@@ -0,0 +1,43 @@
package org.tests.o2m;
import io.ebean.DB;
import io.ebean.test.LoggedSql;
import io.ebean.xtest.BaseTestCase;
import org.junit.jupiter.api.Test;
import org.tests.o2m.dm.GoodsEntity;
import org.tests.o2m.dm.WorkflowEntity;
import org.tests.o2m.dm.WorkflowOperationEntity;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
public class StatefulO2MSoftDelete extends BaseTestCase {
@Test
void statefulUpdateShouldntDelete() {
var bomGoods = new GoodsEntity();
DB.save(bomGoods);
var goods = new GoodsEntity();
var workflow = new WorkflowEntity();
var operation1 = new WorkflowOperationEntity();
operation1.setName("operation 1");
goods.setWorkflowEntity(workflow);
workflow.setOperations(List.of(operation1));
DB.save(goods);
LoggedSql.start();
// replace workflow entity
var goodsFromDB = DB.find(GoodsEntity.class, goods.getId());
goodsFromDB.setWorkflowEntity(new WorkflowEntity());
DB.update(goodsFromDB);
var updateSql = LoggedSql.stop();
updateSql.forEach(sql -> assertThat(sql).doesNotContain("delete from workflow_entity"));
if (isH2()) {
assertThat(updateSql.get(4)).contains("update workflow_operation_entity set deleted=true where workflow_id = ?");
assertThat(updateSql.get(6)).contains("update workflow_entity set when_modified=?, deleted=? where id=?");
}
}
}
@@ -5,10 +5,7 @@ import io.ebean.DB;
import io.ebean.test.LoggedSql;
import io.ebean.xtest.BaseTestCase;
import org.junit.jupiter.api.Test;
import org.tests.o2m.dm.GoodsEntity;
import org.tests.o2m.dm.PersonEntity;
import org.tests.o2m.dm.WorkflowEntity;
import org.tests.o2m.dm.WorkflowOperationEntity;
import org.tests.o2m.dm.*;
import java.io.StringWriter;
import java.util.List;
@@ -140,7 +137,14 @@ class TestOneToManyStatelessUpdateResultsInSoftDelete extends BaseTestCase {
assertThat(goodsAfterInsert.getWorkflowEntity().getOperations()).hasSize(1);
goodsAfterInsert.getWorkflowEntity().setOperations(List.of());
LoggedSql.start();
DB.save(goodsAfterInsert);
var sql = LoggedSql.collect();
if (isH2() || isPostgresCompatible()) { // using deleted=true vs deleted=1
assertThat(sql).hasSize(2);
assertThat(sql.get(0)).contains("update workflow_operation_entity set deleted=true where workflow_id = ?");
}
assertThat(goodsAfterInsert.getWorkflowEntity().getOperations()).isEmpty();
assertThat(DB.find(GoodsEntity.class, goods.getId()).getWorkflowEntity().getOperations()).isEmpty();
@@ -157,12 +161,27 @@ class TestOneToManyStatelessUpdateResultsInSoftDelete extends BaseTestCase {
// Using save() throws io.ebean.DuplicateKeyException: Error when batch flush on sql: insert into workflow_entity ...
// Must be an update() and not save() for this to be a "stateless update"
LoggedSql.collect();
DB.update(goodsStateless);
sql = LoggedSql.collect();
assertThat(sql).isNotEmpty();
if (isH2() || isPostgresCompatible()) { // using deleted=true vs deleted=1
assertThat(sql).hasSize(7);
assertThat(sql.get(0)).contains("update workflow_entity set when_modified=? where id=?");
assertThat(sql.get(1)).contains(" -- bind(");
assertThat(sql.get(2)).contains("update workflow_operation_entity set deleted=true where workflow_id = ?");
assertThat(sql.get(3)).contains(" -- bind(");
assertThat(sql.get(4)).contains("insert into workflow_operation_entity (name, version, when_created, when_modified");
assertThat(sql.get(5)).contains(" -- bind(");
assertThat(sql.get(6)).contains("update goods_entity set when_modified=?, workflow_entity_id=? where id=?");
}
var ops = workflow.getOperations();
// shouldn't contain deleted operations
assertThat(ops).hasSize(1);
assertThat(goodsStateless.getWorkflowEntity().getOperations().get(0).getId()).isNotEqualTo(operation1.getId());
LoggedSql.stop();
}
@Test
@@ -197,17 +216,23 @@ class TestOneToManyStatelessUpdateResultsInSoftDelete extends BaseTestCase {
// uncommenting this lines makes the test pass
//assertThat(goodsStateless.getWorkflowEntity().getOperations().size()).isEqualTo(0);
var sql = LoggedSql.stop();
sql.forEach(System.out::println);
System.out.println("BEFORE TRY");
LoggedSql.start();
var sql = LoggedSql.collect();
if (isH2() || isPostgresCompatible()) { // using deleted=true vs deleted=1
assertThat(sql).hasSize(5);
assertThat(sql.get(0)).contains("update workflow_entity set when_modified=? where id=?");
assertThat(sql.get(1)).contains(" -- bind(");
assertThat(sql.get(2)).contains("update workflow_operation_entity set deleted=true where workflow_id = ?");
assertThat(sql.get(3)).contains(" -- bind(");
assertThat(sql.get(4)).contains("update goods_entity set when_modified=?, workflow_entity_id=? where id=?");
}
try (var writer = new StringWriter()) {
var mapper = new ObjectMapper();
mapper.writeValue(writer, goodsStateless);
sql = LoggedSql.stop();
sql.forEach(System.out::println);
// queries fired to load the object graph for writing as json
assertThat(sql).hasSize(7);
sql.forEach(s -> assertThat(s).startsWith("select "));
/*
select t0.id, t0.name, t0.workflow_entity_id, t0.version, t0.when_created, t0.when_modified from goods_entity t0 where t0.id = ?; --bind(4, ) --micros(161)
select t0.id, t0.name, t0.version, t0.when_created, t0.when_modified, t0.created_by, t0.updated_by, t0.workflow_entity_id from goods_entity t0 where t0.id = ?; --bind(4, ) --micros(525)
@@ -230,9 +255,89 @@ class TestOneToManyStatelessUpdateResultsInSoftDelete extends BaseTestCase {
writer.flush();
var serialized = writer.toString();
System.out.println(serialized);
// System.out.println(serialized);
assertThat(serialized).isNotEmpty();
var readGoods = mapper.readValue(writer.toString(), GoodsEntity.class);
assertThat(readGoods.getWorkflowEntity().getOperations()).hasSize(0);
}
}
@Test
void setArrayListDoInsertInsteadUpdate() {
var attachment1 = new Attachment();
attachment1.setName("File1");
var attachment2 = new Attachment();
attachment2.setName("File2");
var goods = new GoodsEntity();
goods.setName("goods1");
goods.setAttachments(List.of(attachment1, attachment2));
DB.save(goods);
String goodAsJson = DB.json().toJson(goods);
var marshaledGoods = DB.json().toBean(GoodsEntity.class, goodAsJson);
var attachment3a = new Attachment();
attachment3a.setName("File3");
marshaledGoods.getAttachments().add(attachment3a);
var persistedGoods = DB.find(GoodsEntity.class, goods.getId());
// this was not deleting orphans and so the inserts throw exception due primary key conflict
persistedGoods.setAttachments(marshaledGoods.getAttachments());
LoggedSql.start();
try {
logger.info("Saving goods with set new attachments list");
DB.save(persistedGoods);
} catch (Exception e) {
logger.error("Insert instead update", e);
}
var sql = LoggedSql.collect();
assertThat(sql).isNotEmpty();
assertThat(sql.get(0)).contains("delete from attachment where goods_entity_id = ?");
assertThat(sql.get(1)).contains(" -- bind(");
assertThat(sql.get(2)).contains("insert into attachment (id, goods_entity_id, name, ");
assertThat(sql.get(3)).contains(" -- bind(");
assertThat(sql.get(4)).contains(" -- bind(");
if (isH2() || isPostgresCompatible() || isMySql()) { // i.e. using identity, not using sequence
assertThat(sql.get(5)).contains("insert into attachment (goods_entity_id, name,");
assertThat(sql.get(6)).contains(" -- bind(");
}
persistedGoods = DB.find(GoodsEntity.class, goods.getId());
// this works good using .clear() and .addAll()
// because here we are mutating the collection, it detects the
// orphan removals occurring via the .clear()
marshaledGoods = DB.json().toBean(GoodsEntity.class, goodAsJson);
var attachment3b = new Attachment();
attachment3b.setName("File3");
marshaledGoods.getAttachments().add(attachment3b);
persistedGoods.getAttachments().clear();
persistedGoods.getAttachments().addAll(marshaledGoods.getAttachments());
LoggedSql.collect();
try {
logger.info("Saving goods with clear/added attachments");
DB.save(persistedGoods);
} catch (Exception e) {
logger.error("Insert instead update", e);
}
sql = LoggedSql.stop();
assertThat(sql.get(0)).contains("delete from attachment where id=?");
assertThat(sql.get(1)).contains(" -- bind(");
assertThat(sql.get(2)).contains(" -- bind(");
assertThat(sql.get(3)).contains(" -- bind(");
assertThat(sql.get(4)).contains("insert into attachment (id, goods_entity_id, name,");
assertThat(sql.get(5)).contains(" -- bind(");
assertThat(sql.get(6)).contains(" -- bind(");
if (isH2() || isPostgresCompatible()) { // using identity, not using sequence
assertThat(sql).hasSize(9);
assertThat(sql.get(7)).contains("insert into attachment (goods_entity_id, name, ");
assertThat(sql.get(8)).contains(" -- bind(");
}
var persistedGoods2 = DB.find(GoodsEntity.class, goods.getId());
assertThat(persistedGoods2.getAttachments()).hasSize(3);
}
}
@@ -0,0 +1,16 @@
package org.tests.o2m.dm;
import javax.persistence.Entity;
@Entity
public class Attachment extends HistoryColumns {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@@ -1,8 +1,7 @@
package org.tests.o2m.dm;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.OneToOne;
import javax.persistence.*;
import java.util.List;
@Entity
public class GoodsEntity extends HistoryColumns {
@@ -11,6 +10,9 @@ public class GoodsEntity extends HistoryColumns {
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true)
private WorkflowEntity workflowEntity;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
private List<Attachment> attachments;
public String getName() {
return name;
}
@@ -26,4 +28,12 @@ public class GoodsEntity extends HistoryColumns {
public void setWorkflowEntity(WorkflowEntity workflowEntity) {
this.workflowEntity = workflowEntity;
}
public List<Attachment> getAttachments() {
return attachments;
}
public void setAttachments(List<Attachment> attachments) {
this.attachments = attachments;
}
}
@@ -77,6 +77,7 @@
<logger name="io.avaje.config" level="TRACE"/>
<logger name="io.ebean.docker" level="DEBUG"/>
<logger name="io.ebean.test" level="TRACE"/>
<logger name="io.ebean.MarkedAsDeleted" level="DEBUG"/>
<!-- <logger name="io.ebean.DDL" level="DEBUG"/>-->
+5 -5
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<name>kotlin querybean generator</name>
@@ -29,7 +29,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
@@ -43,7 +43,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
@@ -64,14 +64,14 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-h2</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-ddl-generator</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<scope>test</scope>
</dependency>
+15 -15
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<artifactId>ebean-platform-all</artifactId>
@@ -14,72 +14,72 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-h2</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-clickhouse</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-db2</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-hana</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-hsqldb</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-mysql</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-mariadb</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-nuodb</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-oracle</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-postgres</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-sqlanywhere</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-sqlite</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-sqlserver</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<artifactId>ebean-platform-clickhouse</artifactId>
@@ -14,12 +14,12 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<artifactId>ebean-platform-db2</artifactId>
@@ -14,12 +14,12 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<artifactId>ebean-platform-h2</artifactId>
@@ -14,7 +14,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<!-- Provided scope so that the H2HistoryTrigger can live in Ebean core
@@ -36,6 +36,6 @@
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<artifactId>ebean-platform-hana</artifactId>
@@ -14,12 +14,12 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<artifactId>ebean-platform-hsqldb</artifactId>
@@ -14,12 +14,12 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-h2</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+4 -4
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<artifactId>ebean-platform-mariadb</artifactId>
@@ -14,18 +14,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-mysql</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<artifactId>ebean-platform-mysql</artifactId>
@@ -14,7 +14,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
@@ -27,6 +27,6 @@
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<artifactId>ebean-platform-nuodb</artifactId>
@@ -14,12 +14,12 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<artifactId>ebean-platform-oracle</artifactId>
@@ -14,7 +14,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
@@ -27,6 +27,6 @@
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+1 -1
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<artifactId>platforms</artifactId>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<artifactId>ebean-platform-postgres</artifactId>
@@ -14,7 +14,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
@@ -41,6 +41,6 @@
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<artifactId>ebean-platform-sqlanywhere</artifactId>
@@ -14,12 +14,12 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<artifactId>ebean-platform-sqlite</artifactId>
@@ -14,12 +14,12 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<artifactId>ebean-platform-sqlserver</artifactId>
@@ -14,7 +14,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
</dependency>
<dependency>
@@ -27,6 +27,6 @@
</dependencies>
<scm>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
</project>
+4 -4
View File
@@ -9,7 +9,7 @@
<groupId>io.ebean</groupId>
<artifactId>ebean-parent</artifactId>
<version>13.11.2</version>
<version>13.11.4</version>
<packaging>pom</packaging>
<name>ebean parent</name>
@@ -18,7 +18,7 @@
<scm>
<developerConnection>scm:git:git@github.com:ebean-orm/ebean.git</developerConnection>
<tag>ebean-parent-13.11.2</tag>
<tag>ebean-parent-13.11.4</tag>
</scm>
<licenses>
@@ -49,8 +49,8 @@
<ebean-migration.version>13.6.0</ebean-migration.version>
<ebean-test-containers.version>6.3</ebean-test-containers.version>
<ebean-datasource.version>8.4</ebean-datasource.version>
<ebean-agent.version>13.11.2</ebean-agent.version>
<ebean-maven-plugin.version>13.11.2</ebean-maven-plugin.version>
<ebean-agent.version>13.11.4</ebean-agent.version>
<ebean-maven-plugin.version>13.11.4</ebean-maven-plugin.version>
<surefire.useModulePath>false</surefire.useModulePath>
</properties>
+1 -1
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.11.2</version>
<version>13.11.4</version>
</parent>
<name>querybean generator</name>
+3 -3
View File
@@ -15,7 +15,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean</artifactId>
<version>13.11.2-SNAPSHOT</version>
<version>13.11.4-SNAPSHOT</version>
</dependency>
<dependency>
@@ -27,7 +27,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-test</artifactId>
<version>13.11.2-SNAPSHOT</version>
<version>13.11.4-SNAPSHOT</version>
<scope>test</scope>
</dependency>
@@ -53,7 +53,7 @@
<path>
<groupId>io.ebean</groupId>
<artifactId>querybean-generator</artifactId>
<version>13.11.2-SNAPSHOT</version>
<version>13.11.4-SNAPSHOT</version>
</path>
</annotationProcessorPaths>
</configuration>
+2 -2
View File
@@ -35,14 +35,14 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-test</artifactId>
<version>13.11.2-SNAPSHOT</version>
<version>13.11.4-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.11.2-SNAPSHOT</version>
<version>13.11.4-SNAPSHOT</version>
<scope>test</scope>
</dependency>