Compare commits

..
Author SHA1 Message Date
Rob Bygrave 7e3d39ac1a [maven-release-plugin] prepare release ebean-parent-13.6.5 2022-07-06 20:59:04 +12:00
Rob Bygrave ce19837649 Bump avaje-lang to 1.1 with the only change being the removal of maven pom descriptors from META-INF/maven 2022-07-06 20:49:49 +12:00
Rob Bygrave 11e20edb59 #2741 - Bump avaje-config to 2.1 and modify ebean-test to support use of ${docker.host} in test container jdbc urls 2022-07-06 20:47:54 +12:00
Rob Bygrave 88b6a60feb #2730 - Secondary @OneToMany fetch query is not happening if the same Entity type is fetched 2022-07-06 20:19:41 +12:00
Rob Bygrave 43dac07d5b #2740 - Bump ebean-test-containers to 6.2 2022-07-06 14:41:24 +12:00
Rob Bygrave 04434215d0 #2740 - Bump ebean-test-containers to 6.2 2022-07-06 14:27:28 +12:00
Rob Bygrave 52e6c0c625 #2736 - findDto nonsupport setter chain (accessor style setters, both fluid style and non fluid style) 2022-07-05 10:37:55 +12:00
Rob Bygrave 745fbe883e #2737 - Mapping of TimeZone doesn't have enough characters 2022-07-05 09:05:13 +12:00
Rob Bygrave 283e0b66fa #2734 - maven build - excluding maven descriptor (pom and properties) from built artifacts 2022-07-04 17:53:28 +12:00
Rob Bygrave 523deb20f4 #2732 - ebean-agent - skip transactional profiling aware enhancement on query beans 2022-07-04 17:05:25 +12:00
Rob Bygrave 23d52ca192 #2731 - Change ebean-querybean annotations from Retention RUNTIME to CLASS 2022-07-04 16:58:06 +12:00
Rob Bygrave d20d276d56 #2728 - Fix for stateless update with orphanRemoval=true and softDelete 2022-07-04 12:22:27 +12:00
Rob Bygrave 5b92ac6e02 Merge branch 'deleted_one_to_many_children_bug' of https://github.com/Ichtil/ebean into Ichtil-deleted_one_to_many_children_bug 2022-07-01 17:12:45 +12:00
Jan Klička 6392f90f32 Add more failing test cases 2022-06-29 18:41:19 +02:00
Jan Klička bb8f3831b8 Testcase demonstrating stateless update resulting in a delete 2022-06-29 16:09:51 +02:00
Rob Bygrave 4bb43814b7 Run build with -T 8 2022-06-28 10:30:30 +12:00
Rob Bygrave 95c1554642 Run build with -T 8, clean test only for main build 2022-06-28 10:24:35 +12:00
Rob Bygrave 2cd59c5166 Run build with -T 8 2022-06-28 09:59:37 +12:00
Rob Bygrave afdb1df7ce Testing nuodb 4.3.2, but it isn't supporting getGeneratedKeys for jdbc batch inserts
That breaks a lot of tests
2022-06-16 23:32:04 +12:00
Rob Bygrave fa6fdf124d Fix test BasicProfileLocationTest 2022-06-16 13:52:27 +12:00
Rob Bygrave 1e044f03ed Adjust test DefaultPersistenceContextTest 2022-06-15 22:25:46 +12:00
Rob Bygrave 7989fcd6ce Bump to 13.6.5-SNAPSHOT after release 2022-06-15 22:22:04 +12:00
Rob Bygrave a5256df6f2 [maven-release-plugin] prepare for next development iteration 2022-06-14 16:14:25 +12:00
92 changed files with 1099 additions and 521 deletions
+1 -1
View File
@@ -36,5 +36,5 @@ jobs:
# - name: Maven single test
# run: mvn --batch-mode clean verify -Dtest="io.ebeaninternal.server.core.DefaultServer_getReferenceTest" -DfailIfNoTests=false
- name: Build with Maven
run: mvn clean package
run: mvn -T 8 clean test
+1 -1
View File
@@ -35,4 +35,4 @@ jobs:
~/.m2
key: build-${{ env.cache-name }}
- name: db2
run: mvn clean test -Dprops.file=testconfig/ebean-db2.properties
run: mvn -T 8 clean test -Dprops.file=testconfig/ebean-db2.properties
+1 -1
View File
@@ -37,5 +37,5 @@ jobs:
- name: Maven version
run: mvn --version
- name: H2Database
run: mvn clean package
run: mvn -T 8 clean package
+1 -1
View File
@@ -35,5 +35,5 @@ jobs:
~/.m2
key: build-${{ env.cache-name }}
- name: Build with Maven
run: mvn package
run: mvn -T 8 test
+1 -1
View File
@@ -39,5 +39,5 @@ jobs:
- name: Maven version
run: mvn --version
- name: Build with Maven
run: mvn package
run: mvn -T 8 test
+1 -1
View File
@@ -35,4 +35,4 @@ jobs:
~/.m2
key: build-${{ env.cache-name }}
- name: mariadb 10.6
run: mvn clean test -Dprops.file=testconfig/ebean-mariadb.properties
run: mvn -T 8 clean test -Dprops.file=testconfig/ebean-mariadb.properties
+1 -1
View File
@@ -35,4 +35,4 @@ jobs:
~/.m2
key: build-${{ env.cache-name }}
- name: mysql
run: mvn clean test -Dprops.file=testconfig/ebean-mysql.properties
run: mvn -T 8 clean test -Dprops.file=testconfig/ebean-mysql.properties
+1 -1
View File
@@ -35,4 +35,4 @@ jobs:
~/.m2
key: build-${{ env.cache-name }}
- name: oracle
run: mvn clean test -Dprops.file=testconfig/ebean-oracle.properties
run: mvn -T 8 clean test -Dprops.file=testconfig/ebean-oracle.properties
+1 -1
View File
@@ -35,4 +35,4 @@ jobs:
~/.m2
key: build-${{ env.cache-name }}
- name: postgres
run: mvn clean test -Dprops.file=testconfig/ebean-postgres.properties
run: mvn -T 8 clean test -Dprops.file=testconfig/ebean-postgres.properties
+1 -1
View File
@@ -35,4 +35,4 @@ jobs:
~/.m2
key: build-${{ env.cache-name }}
- name: sqlserver 2017
run: mvn clean test -Dprops.file=testconfig/ebean-sqlserver17.properties
run: mvn -T 8 clean test -Dprops.file=testconfig/ebean-sqlserver17.properties
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<name>ebean-clickhouse</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-clickhouse</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<name>ebean-cockroach</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-postgres</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<name>ebean-db2</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-db2</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<name>ebean-h2</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-h2</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<name>ebean-hana</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-hana</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<name>ebean-mariadb</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-mariadb</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<name>ebean-mysql</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-mysql</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<name>ebean-nuodb</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-nuodb</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<name>ebean-oracle</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-oracle</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<name>ebean-postgres</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-postgres</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<name>ebean-sqlite</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-sqlite</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<name>ebean-sqlserver</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-sqlserver</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<name>ebean-yugabyte</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-postgres</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+6 -6
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<name>ebean (all platforms)</name>
@@ -16,13 +16,13 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
@@ -35,18 +35,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-all</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+1 -1
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<artifactId>composites</artifactId>
+22 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<name>ebean api</name>
@@ -27,7 +27,7 @@
<dependency>
<groupId>io.avaje</groupId>
<artifactId>avaje-config</artifactId>
<version>2.0</version>
<version>2.1</version>
</dependency>
<!--
@@ -37,7 +37,7 @@
<dependency>
<groupId>io.avaje</groupId>
<artifactId>avaje-lang</artifactId>
<version>1.0</version>
<version>1.1</version>
</dependency>
<dependency>
@@ -103,4 +103,23 @@
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/ebean-maven-version.txt</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<excludes>
<exclude>**/ebean-maven-version.txt</exclude>
</excludes>
</resource>
</resources>
</build>
</project>
@@ -3,8 +3,7 @@ package io.ebean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
import java.io.*;
import java.util.Properties;
/**
@@ -29,9 +28,11 @@ public final class EbeanVersion {
private static void readVersion() {
try {
try (InputStream in = ClassLoader.getSystemResourceAsStream("META-INF/maven/io.ebean/ebean-api/pom.properties")) {
try (InputStream in = ClassLoader.getSystemResourceAsStream("META-INF/ebean-maven-version.txt")) {
if (in != null) {
version = readVersion(in);
try (LineNumberReader reader = new LineNumberReader(new InputStreamReader(in))) {
version = reader.readLine();
}
}
}
log.info("ebean version: {}", version);
@@ -88,7 +89,7 @@ public final class EbeanVersion {
}
/**
* Returns the ebean version (read from /META-INF/maven/io.ebean/ebean/pom.properties)
* Returns the ebean version (read from META-INF/ebean-maven-version.txt)
*/
public static String getVersion() {
return version;
@@ -0,0 +1 @@
${project.version}
+5 -5
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</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.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
<name>ebean autotune</name>
@@ -26,7 +26,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>provided</scope>
</dependency>
@@ -55,7 +55,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-h2</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>test</scope>
</dependency>
@@ -70,7 +70,7 @@
<extensions>true</extensions>
<configuration>
<tiles>
<tile>io.ebean.tile:enhancement:13.6.0</tile>
<tile>io.ebean.tile:enhancement:13.6.5</tile>
</tiles>
</configuration>
</plugin>
+15 -15
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<name>ebean bom</name>
@@ -71,88 +71,88 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core-type</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-ddl-generator</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-externalmapping-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-externalmapping-xml</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-autotune</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>querybean-generator</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>kotlin-querybean-generator</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-test</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-postgis</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-redis</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
+2 -2
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<artifactId>ebean-core-type</artifactId>
@@ -16,7 +16,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
+8 -8
View File
@@ -3,7 +3,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<artifactId>ebean-core</artifactId>
@@ -15,7 +15,7 @@
<scm>
<developerConnection>scm:git:git@github.com:ebean-orm/ebean.git</developerConnection>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
<dependencies>
@@ -41,19 +41,19 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core-type</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-externalmapping-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
@@ -144,21 +144,21 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-h2</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-postgres</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-sqlserver</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>test</scope>
</dependency>
@@ -6,7 +6,6 @@ import io.ebean.bean.EntityBeanIntercept;
import io.ebean.bean.PersistenceContext;
import io.ebean.core.type.DataReader;
import io.ebeaninternal.api.SpiQuery;
import io.ebeaninternal.server.query.STreePropertyAssocMany;
import java.util.Map;
@@ -70,11 +69,6 @@ public interface DbReadContext {
*/
void register(BeanPropertyAssocMany<?> many, BeanCollection<?> bc);
/**
* Return the property that is associated with the many. There can only be
* one. This can be null.
*/
STreePropertyAssocMany getManyProperty();
/**
* Set back the bean that has just been loaded with its id.
@@ -46,20 +46,29 @@ final class DtoMetaBuilder {
}
static String propertyName(String methodName) {
final String name = methodName.substring(3);
return Character.toLowerCase(name.charAt(0)) + name.substring(1);
if (isTraditionalSetterMethod(methodName)) {
final String name = methodName.substring(3);
return Character.toLowerCase(name.charAt(0)) + name.substring(1);
} else {
// accessor style setter method
return methodName;
}
}
private static boolean isTraditionalSetterMethod(String methodName) {
return methodName.startsWith("set") && methodName.length() > 3 && Character.isUpperCase(methodName.charAt(3));
}
/**
* Include a public "setter" method - 1 argument, returns void.
*/
static boolean includeMethod(Method method) {
String name = method.getName();
final int modifiers = method.getModifiers();
return Modifier.isPublic(modifiers)
&& !Modifier.isStatic(modifiers)
&& Void.TYPE.equals(method.getReturnType())
&& method.getParameterTypes().length == 1
&& method.getName().startsWith("set") && method.getName().length() > 3;
&& (!name.equals("wait") && !name.equals("equals"));
}
private void readConstructors() {
@@ -126,7 +126,7 @@ final class SaveManyBeans extends SaveManyBase {
// performance optimisation for large collections
targetDescriptor.preAllocateIds(collection.size());
}
if (!insertedParent && many.isOrphanRemoval() && request.isForcedUpdate()) {
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
@@ -140,6 +140,10 @@ final class SaveManyBeans extends SaveManyBase {
transaction.depth(-1);
}
private boolean forcedUpdateOrphanRemoval() {
return !insertedParent && many.isOrphanRemoval() && request.isForcedUpdate();
}
private void saveAllBeans(final BeanProperty orderColumn) {
Object mapKeyValue = null;
boolean skipSavingThisBean;
@@ -340,7 +344,7 @@ final class SaveManyBeans extends SaveManyBase {
return;
}
if (!(value instanceof BeanCollection<?>)) {
if (!insertedParent && cascade && isChangedProperty()) {
if (!forcedUpdateOrphanRemoval() && (!insertedParent && cascade && isChangedProperty())) {
persister.addToFlushQueue(many.deleteByParentId(request.beanId(), null), transaction, 0);
insertAllChildren = true;
}
@@ -605,14 +605,6 @@ public final class CQuery<T> implements DbReadContext, CancelableQuery, SpiProfi
return logWhereSql;
}
/**
* Return the property that is associated with the many. There can only be one
* per SqlSelect. This can be null.
*/
@Override
public STreePropertyAssocMany getManyProperty() {
return manyProperty;
}
public String getBindLog() {
return bindLog;
@@ -36,6 +36,7 @@ class SqlTreeLoadBean implements SqlTreeLoad {
private final SpiQuery.TemporalMode temporalMode;
private final boolean temporalVersions;
final IdBinder lazyLoadParentIdBinder;
private final STreePropertyAssocMany loadingChildProperty;
SqlTreeLoadBean(SqlTreeNodeBean node) {
this.lazyLoadParent = node.lazyLoadParent;
@@ -55,6 +56,16 @@ class SqlTreeLoadBean implements SqlTreeLoad {
this.properties = node.properties;
this.pathMap = node.pathMap;
this.children = node.createLoadChildren();
this.loadingChildProperty = loadingChildProperty();
}
private STreePropertyAssocMany loadingChildProperty() {
for (SqlTreeLoad child : children) {
if (child instanceof SqlTreeLoadManyRoot) {
return ((SqlTreeLoadManyRoot) child).manyProp();
}
}
return null;
}
boolean isRoot() {
@@ -280,10 +291,9 @@ class SqlTreeLoadBean implements SqlTreeLoad {
* included in the actual query.
*/
private void createListProxies() {
STreePropertyAssocMany fetchedMany = ctx.getManyProperty();
boolean forceNewReference = queryMode == Mode.REFRESH_BEAN;
for (STreePropertyAssocMany many : localDesc.propsMany()) {
if (many != fetchedMany) {
if (many != loadingChildProperty) {
if (readOnlyNoIntercept) {
many.createEmptyReference(localBean);
} else {
@@ -14,6 +14,10 @@ final class SqlTreeLoadManyRoot extends SqlTreeLoadBean {
this.manyProp = node.manyProp;
}
STreePropertyAssocMany manyProp() {
return manyProp;
}
@Override
public EntityBean load(DbReadContext cquery, EntityBean parentBean, EntityBean contextParent) throws SQLException {
// pass in null for parentBean because added to a collection rather than set to the parentBean
@@ -13,7 +13,7 @@ final class ScalarTypeTimeZone extends ScalarTypeBaseVarchar<TimeZone> {
@Override
public int getLength() {
return 20;
return 32;
}
@Override
@@ -1,6 +1,5 @@
package io.ebeaninternal.server.dto;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import java.lang.reflect.Method;
@@ -12,42 +11,54 @@ import static org.assertj.core.api.Assertions.assertThat;
public class DtoMetaBuilderTest {
@Test
public void includeMethod() {
void includeMethod() {
Map<String, Method> methods = getIncludedMethodsFor(D0.class);
assertThat(methods).hasSize(2);
assertThat(methods.get("setName")).isNotNull();
assertThat(methods.get("setId")).isNotNull();
assertThat(methods).containsKeys("setId", "setName");
}
@Test
public void includeMethod_when_notStrictlySetters() {
void includeMethod_when_notStrictlySetters() {
Map<String, Method> methods = getIncludedMethodsFor(D1.class);
assertThat(methods).hasSize(3);
assertThat(methods.get("setNameThen")).isNotNull();
assertThat(methods.get("setIdFor")).isNotNull();
assertThat(methods.get("setI")).isNotNull();
assertThat(methods).hasSize(5);
assertThat(methods).containsKeys("setNameThen", "setIdFor", "setI", "setA", "set");
}
@Test
public void propertyType() {
void includeMethod_when_fluidAccessors() {
Map<String, Method> methods = getIncludedMethodsFor(D2FluidAccessors.class);
assertThat(methods).hasSize(5);
assertThat(methods).containsKeys("nameThen", "idFor", "a", "i", "set");
}
@Test
void includeMethod_when_plainAccessors() {
Map<String, Method> methods = getIncludedMethodsFor(D2PlainAccessors.class);
assertThat(methods).hasSize(5);
assertThat(methods).containsKeys("nameThen", "idFor", "a", "i", "set");
}
@Test
void propertyType() {
Map<String, Method> methods = getIncludedMethodsFor(D0.class);
assertThat(methods).hasSize(2);
Assertions.assertThat(DtoMetaProperty.propertyClass(methods.get("setName"))).isEqualTo(String.class);
assertThat(DtoMetaProperty.propertyClass(methods.get("setName"))).isEqualTo(String.class);
assertThat(DtoMetaProperty.propertyClass(methods.get("setId"))).isEqualTo(long.class);
assertThat(DtoMetaProperty.propertyType(methods.get("setName"))).isEqualTo(String.class);
assertThat(DtoMetaProperty.propertyType(methods.get("setId"))).isEqualTo(long.class);
}
@Test
public void propertyName() {
Assertions.assertThat(DtoMetaBuilder.propertyName("setName")).isEqualTo("name");
void propertyName() {
assertThat(DtoMetaBuilder.propertyName("setName")).isEqualTo("name");
assertThat(DtoMetaBuilder.propertyName("setId")).isEqualTo("id");
assertThat(DtoMetaBuilder.propertyName("setI")).isEqualTo("i");
assertThat(DtoMetaBuilder.propertyName("setfoo")).isEqualTo("foo");
assertThat(DtoMetaBuilder.propertyName("setFoo")).isEqualTo("foo");
}
@@ -120,4 +131,47 @@ public class DtoMetaBuilderTest {
return this;
}
}
@SuppressWarnings("unused")
static class D2FluidAccessors {
public D2FluidAccessors nameThen(String name) {
return this;
}
public D2FluidAccessors idFor(long id) {
return this;
}
public D2FluidAccessors i(long val) {
return this;
}
public D2FluidAccessors set(long val) {
return this;
}
public D2FluidAccessors a(long val) {
return this;
}
}
@SuppressWarnings("unused")
static class D2PlainAccessors {
public void nameThen(String name) {
}
public void idFor(long id) {
}
public void i(long val) {
}
public void set(long val) {
}
public void a(long val) {
}
}
}
@@ -17,11 +17,11 @@ class BasicProfileLocationTest {
assertThat(loc.fullLocation()).endsWith("invoke0(Native Method:12)");
assertThat(loc.location()).isEqualTo("sun.reflect.NativeMethodAccessorImpl.invoke0");
assertThat(loc.label()).isEqualTo("NativeMethodAccessorImpl.invoke0");
} else if (javaVersion.startsWith("18") || javaVersion.startsWith("19")){
} else if (javaVersion.startsWith("18") || javaVersion.startsWith("19") || javaVersion.startsWith("20")){
assertThat(loc.fullLocation()).endsWith("jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)");
assertThat(loc.location()).isEqualTo("java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke");
assertThat(loc.label()).isEqualTo("DirectMethodHandleAccessor.invoke");
} else {
} else if (javaVersion.startsWith("11") || javaVersion.startsWith("17")) {
assertThat(loc.fullLocation()).endsWith("jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method:12)");
assertThat(loc.location()).isEqualTo("java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0");
assertThat(loc.label()).isEqualTo("NativeMethodAccessorImpl.invoke0");
@@ -0,0 +1,15 @@
package io.ebeaninternal.server.type;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class ScalarTypeTimeZoneTest {
ScalarTypeTimeZone type = new ScalarTypeTimeZone();
@Test
void getLength() {
assertEquals(32, type.getLength());
}
}
+4 -4
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<name>ebean ddl generation</name>
@@ -28,14 +28,14 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core-type</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>provided</scope>
</dependency>
@@ -58,7 +58,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-all</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>test</scope>
</dependency>
@@ -13,6 +13,22 @@ public class NuoDbDdl extends PlatformDdl {
this.dropConstraintIfExists = "drop constraint";
}
@Override
public String createSequence(String sequenceName, DdlIdentity identity) {
StringBuilder sb = new StringBuilder("create sequence ");
sb.append(quote(sequenceName));
int start = identity.getStart();
if (start > 0) {
sb.append(" ").append(sequenceStartWith).append(" ").append(start);
}
int cache = identity.getCache();
if (cache > 0) {
sb.append(" quantum size ").append(cache);
}
sb.append(";");
return sb.toString();
}
@Override
public void addTableComment(DdlBuffer apply, String tableName, String tableComment) {
// do nothing
+1 -1
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<name>ebean external mapping api</name>
+7 -7
View File
@@ -4,12 +4,12 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<scm>
<developerConnection>scm:git:git@github.com:ebean-orm/ebean.git</developerConnection>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
<name>ebean external mapping xml</name>
@@ -28,7 +28,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-externalmapping-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
@@ -61,21 +61,21 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-h2</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-ddl-generator</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>test</scope>
</dependency>
@@ -98,7 +98,7 @@
<configuration>
<tiles>
<!-- other tiles ... -->
<tile>io.ebean.tile:enhancement:13.6.0</tile>
<tile>io.ebean.tile:enhancement:13.6.5</tile>
</tiles>
</configuration>
</plugin>
+4 -4
View File
@@ -6,7 +6,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4-SNAPSHOT</version>
<version>13.6.5-SNAPSHOT</version>
</parent>
<artifactId>ebean-kotlin</artifactId>
@@ -28,7 +28,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4-SNAPSHOT</version>
<version>13.6.5-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
@@ -50,7 +50,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-test</artifactId>
<version>13.6.4-SNAPSHOT</version>
<version>13.6.5-SNAPSHOT</version>
<scope>test</scope>
</dependency>
@@ -92,7 +92,7 @@
<extensions>true</extensions>
<configuration>
<tiles>
<tile>io.ebean.tile:enhancement:13.6.0</tile>
<tile>io.ebean.tile:enhancement:13.6.5</tile>
</tiles>
</configuration>
</plugin>
+5 -5
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<name>ebean postgis</name>
@@ -22,14 +22,14 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-postgres</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<!-- provided scope -->
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>provided</scope>
</dependency>
@@ -73,7 +73,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-test</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>test</scope>
</dependency>
@@ -104,7 +104,7 @@
<extensions>true</extensions>
<configuration>
<tiles>
<tile>io.ebean.tile:enhancement:13.6.0</tile>
<tile>io.ebean.tile:enhancement:13.6.5</tile>
</tiles>
</configuration>
</plugin>
+7 -7
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<name>ebean querybean</name>
@@ -17,7 +17,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>provided</scope>
</dependency>
@@ -35,7 +35,7 @@
<dependency>
<groupId>io.avaje</groupId>
<artifactId>avaje-lang</artifactId>
<version>1.0</version>
<version>1.1</version>
</dependency>
<dependency>
@@ -63,21 +63,21 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-ddl-generator</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>querybean-generator</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-test</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>test</scope>
</dependency>
@@ -107,7 +107,7 @@
<extensions>true</extensions>
<configuration>
<tiles>
<tile>io.ebean.tile:enhancement:13.6.0</tile>
<tile>io.ebean.tile:enhancement:13.6.5</tile>
</tiles>
</configuration>
</plugin>
@@ -9,10 +9,9 @@ import java.lang.annotation.Target;
* Used to denote a query bean that has already been enhanced.
* <p>
* Used by the agent to detect already enhanced type query beans to skip enhancement processing.
* </p>
*/
@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Retention(RetentionPolicy.CLASS)
public @interface AlreadyEnhancedMarker {
}
@@ -11,7 +11,7 @@ import java.lang.annotation.Target;
* This is code generated by the query bean generator (annotation processor).
*/
@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Retention(RetentionPolicy.CLASS)
public @interface Generated {
/**
@@ -9,10 +9,9 @@ import java.lang.annotation.Target;
* Used to denote a type query bean.
* <p>
* These are typically generated beans used to build queries using type safe query criteria.
* </p>
*/
@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Retention(RetentionPolicy.CLASS)
public @interface TypeQueryBean {
/**
@@ -1,2 +1,4 @@
entity-packages: org.example.domain
querybean-packages: org.example.domain,org.querytest
debug: 0
synthetic: false
+7 -7
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<artifactId>ebean-redis</artifactId>
@@ -22,35 +22,35 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>querybean-generator</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-test</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>test</scope>
</dependency>
@@ -80,7 +80,7 @@
<extensions>true</extensions>
<configuration>
<tiles>
<tile>io.ebean.tile:enhancement:13.6.0</tile>
<tile>io.ebean.tile:enhancement:13.6.5</tile>
</tiles>
</configuration>
</plugin>
+7 -7
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<name>ebean test</name>
@@ -29,20 +29,20 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-h2</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-ddl-generator</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
@@ -106,7 +106,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-all</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>test</scope>
</dependency>
@@ -228,7 +228,7 @@
<dependency>
<groupId>com.nuodb.jdbc</groupId>
<artifactId>nuodb-jdbc</artifactId>
<version>22.0.0</version>
<version>23.0.0</version>
<scope>test</scope>
</dependency>
@@ -266,7 +266,7 @@
<extensions>true</extensions>
<configuration>
<tiles>
<tile>io.ebean.tile:enhancement:13.6.0</tile>
<tile>io.ebean.tile:enhancement:13.6.5</tile>
</tiles>
</configuration>
</plugin>
@@ -5,6 +5,7 @@ import io.ebean.config.DatabaseConfig;
import io.ebean.datasource.DataSourceConfig;
import io.ebean.test.config.platform.PlatformAutoConfig;
import io.ebean.test.config.provider.ProviderAutoConfig;
import io.ebean.test.containers.DockerHost;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -29,11 +30,17 @@ public class AutoConfigureForTesting implements AutoConfigure {
@Override
public void preConfigure(DatabaseConfig config) {
Properties properties = config.getProperties();
if (properties != null) {
// trigger determination of docker.host system property if not already done
// and re-evaluate properties in case there is use of ${docker.host} in jdbc url etc
DockerHost.host();
io.avaje.config.Config.asConfiguration().evalModify(properties);
}
if (!config.isDefaultServer()) {
log.info("skip automatic testing config on non-default server name:{} register:{}", config.getName(), config.isRegister());
return;
}
Properties properties = config.getProperties();
if (isExtraServer(config, properties)) {
setupExtraDataSourceIfNecessary(config);
return;
@@ -2,6 +2,7 @@ package io.ebean.test.config.platform;
import io.ebean.config.DatabaseConfig;
import io.ebean.datasource.DataSourceConfig;
import io.ebean.test.containers.DockerHost;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -38,7 +39,6 @@ class Config {
private final DatabaseConfig config;
private boolean containerDropCreate;
private final Properties dockerProperties = new Properties();
private final DockerHost dockerHost = new DockerHost();
Config(String db, String platform, String databaseName, DatabaseConfig config) {
this.db = db;
@@ -241,8 +241,7 @@ class Config {
}
String host() {
String explicitDockerHost = getKey("dockerHost", null);
return getKey("host", dockerHost.dockerHost(explicitDockerHost));
return getKey("host", getKey("dockerHost", DockerHost.host()));
}
/**
@@ -385,10 +384,6 @@ class Config {
}
private void initDockerProperties() {
if (dockerHost.runningInDocker()) {
// tell ebean-docker-test we are not using localhost (for jdbc DB setup commands)
dockerProperties.setProperty(dockerKey("host"), dockerHost.dockerHost());
}
dockerProperties.setProperty(dockerKey("port"), String.valueOf(port));
dockerProperties.setProperty(dockerKey("dbName"), databaseName);
if (schema != null) {
@@ -1,55 +0,0 @@
package io.ebean.test.config.platform;
import java.io.File;
import java.util.Locale;
/**
* Helper to detect if running inside docker and determine host name for that case.
*/
class DockerHost {
private final boolean runningInDocker;
private String dockerHost;
DockerHost() {
runningInDocker = initInDocker();
}
boolean runningInDocker() {
return runningInDocker;
}
String dockerHost() {
return dockerHost;
}
String dockerHost(String explicitHost) {
if (!runningInDocker) {
return "localhost";
}
dockerHost = explicitHost != null ? explicitHost : defaultDockerHost();
return dockerHost;
}
/**
* Return true if running inside a docker container (we are using docker in docker).
*/
boolean initInDocker() {
return new File("/.dockerenv").exists();
}
/**
* Return the default host name to use when running in docker.
* <p>
* Can instead be explicitly specified via <code>ebean.test.dockerHost</code>.
*/
String defaultDockerHost() {
String os = System.getProperty("os.name", "generic").toLowerCase(Locale.ENGLISH);
if (os.contains("mac") || os.contains("darwin") || os.contains("win")) {
return "host.docker.internal";
} else {
return "172.17.0.1";
}
}
}
@@ -1,5 +1,6 @@
package io.ebean.test.config.platform;
import io.ebean.test.containers.DockerHost;
import io.ebean.test.containers.RedisContainer;
import java.util.Properties;
@@ -10,11 +11,8 @@ class RedisSetup {
String version = properties.getProperty("ebean.test.redis");
version = properties.getProperty("ebean.test.redis.version", version);
if (version != null) {
DockerHost dockerHost = new DockerHost();
if (dockerHost.runningInDocker()) {
String host = dockerHost.dockerHost(properties.getProperty("ebean.test.dockerHost"));
properties.setProperty("redis.host", host);
}
String host = properties.getProperty("ebean.test.dockerHost", DockerHost.host());
properties.setProperty("redis.host", host);
RedisContainer.builder(version)
.properties(properties)
.build()
@@ -1,87 +0,0 @@
package io.ebean.test.config.platform;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class DockerHostTest {
@Test
void runningInDocker_when_false_alwaysUseLocalhost() {
DockerHost dockerHost = new DockerHost();
assertFalse(dockerHost.runningInDocker());
assertEquals("localhost", dockerHost.dockerHost("foo"));
}
@Test
void runningInDocker_when_true_useExplicit() {
TDDockerHost dockerHost = new TDDockerHost();
assertTrue(dockerHost.runningInDocker());
assertEquals("my-host", dockerHost.dockerHost("my-host"));
}
@Disabled
@Test
void runningInDocker_when_trueAndLinux_useDefault() {
TDDockerHost dockerHost = new TDDockerHost();
assertTrue(dockerHost.runningInDocker());
assertEquals("172.17.0.1", dockerHost.dockerHost(null));
}
@Test
void runningInDocker_when_windowsDefault() {
TDDockerHost dockerHost = new TDDockerHost();
assertTrue(dockerHost.runningInDocker());
String origName = System.getProperty("os.name");
System.setProperty("os.name", "win");
try {
assertEquals("host.docker.internal",dockerHost.defaultDockerHost());
assertEquals("host.docker.internal", dockerHost.dockerHost(null));
} finally {
System.setProperty("os.name", origName);
}
}
@Test
void runningInDocker_when_macDefault() {
TDDockerHost dockerHost = new TDDockerHost();
assertTrue(dockerHost.runningInDocker());
String origName = System.getProperty("os.name");
System.setProperty("os.name", "mac");
try {
assertEquals("host.docker.internal",dockerHost.defaultDockerHost());
assertEquals("host.docker.internal", dockerHost.dockerHost(null));
} finally {
System.setProperty("os.name", origName);
}
}
@Test
void runningInDocker_when_linuxDefault() {
TDDockerHost dockerHost = new TDDockerHost();
assertTrue(dockerHost.runningInDocker());
String origName = System.getProperty("os.name");
System.setProperty("os.name", "linux");
try {
assertEquals("172.17.0.1",dockerHost.defaultDockerHost());
assertEquals("172.17.0.1", dockerHost.dockerHost(null));
} finally {
System.setProperty("os.name", origName);
}
}
static class TDDockerHost extends DockerHost {
@Override
boolean initInDocker() {
return true;
}
}
}
@@ -24,12 +24,36 @@ public class DtoQuery2Test extends BaseTestCase {
private static final Logger log = LoggerFactory.getLogger(DtoQuery2Test.class);
@Test
public void dto_findList_constructorMatch() {
void dto_findList_fluidAccessors() {
ResetBasicData.reset();
List<DCustFluidAccessors> list = server().findDto(DCustFluidAccessors.class, "select id, name from o_customer").findList();
assertThat(list).isNotEmpty();
for (DCustFluidAccessors cust: list) {
assertThat(cust.id()).isNotNull();
assertThat(cust.name()).isNotNull();
}
}
@Test
void dto_findList_plainAccessors() {
ResetBasicData.reset();
List<DCustPlainAccessors> list = server().findDto(DCustPlainAccessors.class, "select id, name from o_customer").findList();
assertThat(list).isNotEmpty();
for (DCustPlainAccessors cust: list) {
assertThat(cust.id()).isNotNull();
assertThat(cust.name()).isNotNull();
}
}
@Test
void dto_findList_constructorMatch() {
ResetBasicData.reset();
DtoQuery<DCust> dtoQuery = server().findDto(DCust.class, "select id, name from o_customer");
List<DCust> list = dtoQuery.findList();
log.info(list.toString());
@@ -37,7 +61,7 @@ public class DtoQuery2Test extends BaseTestCase {
}
@Test
public void dto_findIterator_closeWithResources() {
void dto_findIterator_closeWithResources() {
ResetBasicData.reset();
int counter = 0;
@@ -55,7 +79,7 @@ public class DtoQuery2Test extends BaseTestCase {
}
@Test
public void dto_findIterator() {
void dto_findIterator() {
ResetBasicData.reset();
final int expectedCount = server().find(Customer.class).findCount();
@@ -80,7 +104,7 @@ public class DtoQuery2Test extends BaseTestCase {
}
@Test
public void dto_findStream() {
void dto_findStream() {
ResetBasicData.reset();
final int expectedCount = server().find(Customer.class).findCount();
@@ -104,8 +128,7 @@ public class DtoQuery2Test extends BaseTestCase {
}
@Test
public void dto_findEach_constructorMatch() {
void dto_findEach_constructorMatch() {
ResetBasicData.reset();
LoggedSql.start();
@@ -118,8 +141,7 @@ public class DtoQuery2Test extends BaseTestCase {
}
@Test
public void dto_findEachWhile_constructorMatch() {
void dto_findEachWhile_constructorMatch() {
ResetBasicData.reset();
LoggedSql.start();
@@ -135,8 +157,7 @@ public class DtoQuery2Test extends BaseTestCase {
}
@Test
public void dto_findOneEmpty() {
void dto_findOneEmpty() {
ResetBasicData.reset();
Optional<DCust> rob = server().findDto(DCust.class, "select id, name from o_customer where name = :name")
@@ -153,8 +174,7 @@ public class DtoQuery2Test extends BaseTestCase {
}
@Test
public void dto_findOne() {
void dto_findOne() {
ResetBasicData.reset();
DCust fiona = server().findDto(DCust.class, "select id, name from o_customer where name = :name")
@@ -172,8 +192,7 @@ public class DtoQuery2Test extends BaseTestCase {
@Test
public void dto_queryPlanHits() {
void dto_queryPlanHits() {
ResetBasicData.reset();
resetAllMetrics();
@@ -218,8 +237,7 @@ public class DtoQuery2Test extends BaseTestCase {
}
@Test
public void dto_findList_relaxedMode() {
void dto_findList_relaxedMode() {
ResetBasicData.reset();
List<DCust2> list = server().findDto(DCust2.class, "select id, '42' as something_we_cannot_map, name from o_customer")
@@ -231,8 +249,7 @@ public class DtoQuery2Test extends BaseTestCase {
}
@Test
public void dto_findList_relaxedMode_defaultConstructor() {
void dto_findList_relaxedMode_defaultConstructor() {
ResetBasicData.reset();
List<DCust2> list = server().findDto(DCust2.class, "select id, '42' as something_we_cannot_map, name from o_customer")
@@ -244,8 +261,7 @@ public class DtoQuery2Test extends BaseTestCase {
}
@Test
public void dto_findList_constructorPlusMatch() {
void dto_findList_constructorPlusMatch() {
ResetBasicData.reset();
String sql = "select c.id, c.name, count(o.id) as totalOrders\n" +
@@ -263,8 +279,7 @@ public class DtoQuery2Test extends BaseTestCase {
}
@Test
public void dto_findList_setters() {
void dto_findList_setters() {
ResetBasicData.reset();
DtoQuery<DCust2> dtoQuery = server().findDto(DCust2.class, "select id, name from o_customer");
@@ -275,8 +290,7 @@ public class DtoQuery2Test extends BaseTestCase {
}
@Test
public void dto3_findList_constructorMatch() {
void dto3_findList_constructorMatch() {
ResetBasicData.reset();
List<DCust3> robs = server().findDto(DCust3.class, "select id, name, 42 as totalOrders from o_customer where name like ?")
@@ -290,8 +304,7 @@ public class DtoQuery2Test extends BaseTestCase {
}
@Test
public void dto3_findList_settersMatch() {
void dto3_findList_settersMatch() {
ResetBasicData.reset();
List<DCust3> robs = server().findDto(DCust3.class, "select id, name from o_customer where name = :name")
@@ -305,9 +318,7 @@ public class DtoQuery2Test extends BaseTestCase {
public static class DCust {
final Integer id;
final String name;
int totalOrders;
public DCust(Integer id, String name) {
@@ -340,7 +351,6 @@ public class DtoQuery2Test extends BaseTestCase {
public static class DCust2 {
Integer id;
String name;
@Override
@@ -368,9 +378,7 @@ public class DtoQuery2Test extends BaseTestCase {
public static class DCust3 {
Integer id;
String name;
int totalOrders;
public DCust3() {
@@ -411,4 +419,60 @@ public class DtoQuery2Test extends BaseTestCase {
this.name = name;
}
}
public static class DCustFluidAccessors {
Integer id;
String name;
@Override
public String toString() {
return "id:" + id + " name:" + name;
}
public Integer id() {
return id;
}
public DCustFluidAccessors id(Integer id) {
this.id = id;
return this;
}
public String name() {
return name;
}
public DCustFluidAccessors name(String name) {
this.name = name;
return this;
}
}
public static class DCustPlainAccessors {
Integer id;
String name;
@Override
public String toString() {
return "id:" + id + " name:" + name;
}
public Integer id() {
return id;
}
public void id(Integer id) {
this.id = id;
}
public String name() {
return name;
}
public void name(String name) {
this.name = name;
}
}
}
@@ -178,16 +178,16 @@ class DefaultPersistenceContextTest {
assertThat(pc.size(Customer.class)).isEqualTo(100);
assertThat(pc.size(Contact.class)).isEqualTo(1010);
addCustomers(pc, 200, 100);
addContacts(pc, 2000, 1010);
assertThat(pc.size(Customer.class)).isEqualTo(200);
assertThat(pc.size(Contact.class)).isEqualTo(2020);
addCustomers(pc, 200, 103);
assertThat(pc.size(Customer.class)).isEqualTo(203);
addContacts(pc, 2000, 1013);
assertThat(pc.size(Contact.class)).isEqualTo(2023);
pc.endIterate();
System.gc();
Thread.sleep(50); // give the GC some time
Thread.sleep(100); // give the GC some time
// back to pre beginIterate() now
assertThat(pc.size(Customer.class)).isEqualTo(100);
assertThat(pc.size(Contact.class)).isEqualTo(1010);
}
@@ -16,8 +16,26 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
class TestExtraScalarTypes extends BaseTestCase {
@Test
void test() {
void insertLargeTimezone() {
TimeZone tz = TimeZone.getTimeZone("America/Argentina/ComodRivadavia");
var bean = new ESomeType();
bean.setTimeZone(tz);
DB.save(bean);
var found = DB.find(ESomeType.class, bean.getId());
assert found != null;
assertThat(found.getTimeZone()).isEqualTo(tz);
var findByTimezone = DB.find(ESomeType.class).where().eq("timeZone", tz).findList();
assertThat(findByTimezone).hasSize(1);
assertThat(findByTimezone.get(0).getId()).isEqualTo(found.getId());
assertThat(findByTimezone.get(0).getTimeZone()).isEqualTo(tz);
DB.delete(found);
}
@Test
void test() {
Locale locale = Locale.ENGLISH;
Currency currency = Currency.getInstance(Locale.US);
TimeZone tz = TimeZone.getDefault();
@@ -7,45 +7,15 @@ import org.tests.model.basic.ESimple;
import static org.junit.jupiter.api.Assertions.assertNotNull;
public class TestSimpleIdInsert extends BaseTestCase {
class TestSimpleIdInsert extends BaseTestCase {
@Test
public void test() {
void test() {
ESimple e = new ESimple();
e.setName("name");
DB.save(e);
assertNotNull(e.getId());
}
// // This test fails with jdbc drivers that don't
// // support batch insert with getGeneratedKeys
// public void testJdbcBatch() {
//
// GlobalProperties.put("datasource.default", "hsqldb");
// GlobalProperties.put("ebean.classes", ESimple.class.getName());
//
// Transaction transaction = DB.beginTransaction();
// try {
// transaction.setBatchMode(true);
// transaction.setLogLevel(LogLevel.SQL);
// ESimple e = new ESimple();
// e.setName("name");
// DB.save(e);
//
// ESimple e2 = new ESimple();
// e2.setName("name2");
// DB.save(e2);
// transaction.commit();
//
// Assert.assertNotNull(e.getId());
// Assert.assertNotNull(e2.getId());
//
// } finally {
// DB.endTransaction();
// }
// }
}
@@ -0,0 +1,164 @@
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;
class TestOneToManyStatelessUpdateResultsInSoftDelete extends BaseTestCase {
@Test
void testStatelessUpdateShouldntDelete() {
LoggedSql.start();
var goods = new GoodsEntity();
var workflow = new WorkflowEntity();
var operation1 = new WorkflowOperationEntity();
goods.setWorkflowEntity(workflow);
workflow.setOperations(List.of(operation1));
DB.save(goods);
LoggedSql.collect();
// statelessly add another operation to the workflow and save goods
var goodsStateless = new GoodsEntity();
goodsStateless.setId(goods.getId());
var workflowStateless = new WorkflowEntity();
workflowStateless.setId(workflow.getId());
var operation1Stateless = new WorkflowOperationEntity();
operation1Stateless.setId(operation1.getId());
var operation2 = new WorkflowOperationEntity();
goodsStateless.setWorkflowEntity(workflowStateless);
workflowStateless.setOperations(List.of(operation1Stateless, operation2));
// With the fix the SQL is now:
/*
txn[1002] update workflow_entity set when_modified=? where id=?
txn[1002] -- bind(2022-07-04 11:10:54.446,1)
txn[1002] update workflow_operation_entity set deleted=true where workflow_id = ? and not ( id in (?) )
txn[1002] -- bind(1, Array[1]={1})
txn[1002] insert into workflow_operation_entity (name, version, when_created, when_modified, deleted, workflow_id) values (?,?,?,?,?,?)
txn[1002] -- bind(null,1,2022-07-04 11:10:54.458,2022-07-04 11:10:54.458,false,1)
txn[1002] update goods_entity set when_modified=?, workflow_entity_id=? where id=?; -- bind(2022-07-04 11:10:54.446,1,1)
*/
/*
- this update generates following statements
1 txn[] delete from workflow_operation_entity where workflow_id=?
2 txn[] -- bind(1)
3 txn[] update workflow_entity set when_modified=? where id=?
4 txn[] -- bind(2022-06-29 15:43:55.573,1)
5 txn[] update workflow_operation_entity set deleted=true where workflow_id = ? and not ( id in (?) )
6 txn[] -- bind(1, Array[1]={1})
7 txn[] insert into workflow_operation_entity (name, version, when_created, when_modified, deleted, workflow_id) values (?,?,?,?,?,?)
8 txn[] -- bind(null,1,2022-06-29 15:43:55.584,2022-06-29 15:43:55.584,false,1)
9 txn[] update goods_entity set when_modified=?, workflow_entity_id=? where id=?; -- bind(2022-06-29 15:43:55.573,1,1)
- number 1 is wrong
- no delete should be issued
- even if it was issued, it should have been soft delete
- the DB.update will throw exception if there is one-to-many relation on workflow_operation_entity
- it would still be referenced from other table
*/
DB.update(goodsStateless);
var updateSql = LoggedSql.stop();
//updateSql.forEach(System.out::println);
var dbGoodsAfterUpdate = DB.find(GoodsEntity.class, goods.getId());
assertThat(dbGoodsAfterUpdate.getWorkflowEntity().getOperations()).hasSize(2);
assertThat(dbGoodsAfterUpdate.getWorkflowEntity().getOperations()).extracting("id").contains(operation1.getId(), operation2.getId());
updateSql.forEach(sql -> assertThat(sql).doesNotContain("delete from workflow_entity"));
}
// same as previous but DB.update throws exception
@Test
void testStatelessUpdateShouldntDeleteThrows() {
LoggedSql.start();
var goods = new GoodsEntity();
goods.setName("ver1");
var workflow = new WorkflowEntity();
workflow.setRevision("ver1");
var operation1 = new WorkflowOperationEntity();
operation1.setName("ver1");
goods.setWorkflowEntity(workflow);
workflow.setOperations(List.of(operation1));
DB.save(goods);
List<String> createSql = LoggedSql.stop();
LoggedSql.start();
// statelessly add another operation to the workflow and save goods
var goodsStateless = new GoodsEntity();
goodsStateless.setId(goods.getId());
goodsStateless.setName("ver2");
var workflowStateless = new WorkflowEntity();
workflowStateless.setRevision("ver2");
workflowStateless.setId(workflow.getId());
var operation1Stateless = new WorkflowOperationEntity();
operation1Stateless.setName("ver2");
operation1Stateless.setId(operation1.getId());
var operation2 = new WorkflowOperationEntity();
operation2.setName("ver2");
goodsStateless.setWorkflowEntity(workflowStateless);
workflowStateless.setOperations(List.of(operation1Stateless, operation2));
// throws
DB.update(goodsStateless);
var updateSql = LoggedSql.stop();
updateSql.forEach(System.out::println);
var dbGoodsAfterUpdate = DB.find(GoodsEntity.class, goods.getId());
assertThat(dbGoodsAfterUpdate.getWorkflowEntity().getOperations()).hasSize(2);
assertThat(dbGoodsAfterUpdate.getWorkflowEntity().getOperations().get(0).getId()).isEqualTo(operation1.getId());
assertThat(dbGoodsAfterUpdate.getWorkflowEntity().getOperations().get(1).getId()).isEqualTo(operation2.getId());
updateSql.forEach(sql -> assertThat(sql).doesNotContain("delete from workflow_entity"));
}
@Test
void duplicateKeyWorkflowEntityInsertInsteadOfUpdate() {
var goods = new GoodsEntity();
goods.setName("ver1");
var workflow = new WorkflowEntity();
workflow.setRevision("ver1");
var operation1 = new WorkflowOperationEntity();
operation1.setName("ver1");
goods.setWorkflowEntity(workflow);
workflow.setOperations(List.of(operation1));
DB.save(goods);
// delete operation
var goodsAfterInsert = DB.find(GoodsEntity.class, goods.getId());
assertThat(goodsAfterInsert.getWorkflowEntity().getOperations()).hasSize(1);
goodsAfterInsert.getWorkflowEntity().setOperations(List.of());
DB.save(goodsAfterInsert);
assertThat(goodsAfterInsert.getWorkflowEntity().getOperations()).isEmpty();
assertThat(DB.find(GoodsEntity.class, goods.getId()).getWorkflowEntity().getOperations()).isEmpty();
// statelessly add new WorkflowOperationEntity
var goodsStateless = new GoodsEntity();
goodsStateless.setId(goods.getId());
var workflowStateless = new WorkflowEntity();
workflowStateless.setId(workflow.getId());
goodsStateless.setWorkflowEntity(workflowStateless);
var operation2 = new WorkflowOperationEntity();
workflowStateless.setOperations(List.of(operation2));
// 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"
DB.update(goodsStateless);
var ops = workflow.getOperations();
// shouldn't contain deleted operations
assertThat(ops).hasSize(1);
assertThat(goodsStateless.getWorkflowEntity().getOperations().get(0).getId()).isNotEqualTo(operation1.getId());
}
}
@@ -0,0 +1,32 @@
package org.tests.o2m.dm;
import org.tests.model.draftable.BaseDomain;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToOne;
@Entity
public class GoodsEntity extends BaseDomain {
private String name;
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true)
private WorkflowEntity workflowEntity;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public WorkflowEntity getWorkflowEntity() {
return workflowEntity;
}
public void setWorkflowEntity(WorkflowEntity workflowEntity) {
this.workflowEntity = workflowEntity;
}
}
@@ -0,0 +1,44 @@
package org.tests.o2m.dm;
import io.ebean.annotation.SoftDelete;
import org.tests.model.draftable.BaseDomain;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Entity
public class WorkflowEntity extends BaseDomain {
private String revision;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "workflow_id")
private List<WorkflowOperationEntity> operations = new ArrayList<>();
@SoftDelete
private boolean deleted;
public String getRevision() {
return revision;
}
public void setRevision(String revision) {
this.revision = revision;
}
public List<WorkflowOperationEntity> getOperations() {
return operations;
}
public void setOperations(List<WorkflowOperationEntity> operations) {
this.operations = operations;
}
public boolean isDeleted() {
return deleted;
}
public void setDeleted(boolean deleted) {
this.deleted = deleted;
}
}
@@ -0,0 +1,45 @@
package org.tests.o2m.dm;
import io.ebean.annotation.SoftDelete;
import org.tests.model.draftable.BaseDomain;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Entity
public class WorkflowOperationEntity extends BaseDomain {
private String name;
@ManyToOne
@JoinColumn(name = "workflow_id")
private WorkflowEntity workflowEntity;
@SoftDelete
private boolean deleted;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public WorkflowEntity getWorkflowEntity() {
return workflowEntity;
}
public void setWorkflowEntity(WorkflowEntity workflowEntity) {
this.workflowEntity = workflowEntity;
}
public boolean isDeleted() {
return deleted;
}
public void setDeleted(boolean deleted) {
this.deleted = deleted;
}
}
@@ -0,0 +1,51 @@
package org.tests.o2m.recurse;
import javax.persistence.*;
import java.util.List;
@Entity
public class RMItem {
@Id
private long itemId;
@ManyToOne
@JoinColumn(name = "item_group_id")
private RMItem itemGroup;
private String name;
@OneToMany(mappedBy = "itemGroup")
private List<RMItem> subItems;
public RMItem() {
}
public RMItem(String name) {
this.name = name;
}
public Long getItemId() {
return itemId;
}
public void setItemId(Long itemId) {
this.itemId = itemId;
}
public RMItem getItemGroup() {
return itemGroup;
}
public void setItemGroup(RMItem itemGroup) {
this.itemGroup = itemGroup;
}
public List<RMItem> getSubItems() {
return subItems;
}
public void setSubItems(List<RMItem> subItems) {
this.subItems = subItems;
}
}
@@ -0,0 +1,80 @@
package org.tests.o2m.recurse;
import io.ebean.Model;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Version;
@Entity
public class RMItemHolder extends Model {
@Id
long id;
String name;
String notes;
@ManyToOne
//@JoinColumn(name = "item_a_id")
private RMItem itemA;
@ManyToOne
//@JoinColumn(name = "item_b_id")
private RMItem itemB;
@Version
long version;
public RMItemHolder(String name) {
this.name = name;
}
public RMItemHolder() {
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNotes() {
return notes;
}
public void setNotes(String notes) {
this.notes = notes;
}
public long getVersion() {
return version;
}
public void setVersion(long version) {
this.version = version;
}
public RMItem getItemA() {
return itemA;
}
public void setItemA(RMItem itemA) {
this.itemA = itemA;
}
public RMItem getItemB() {
return itemB;
}
public void setItemB(RMItem itemB) {
this.itemB = itemB;
}
}
@@ -0,0 +1,133 @@
package org.tests.o2m.recurse;
import io.ebean.DB;
import io.ebean.Database;
import io.ebean.FetchConfig;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
class TestFetchOneToManySameTypeTwoPaths {
@Test
void testSubItemListFetch_ofQuery() {
Database server = DB.getDefault();
RMItem itemA = new RMItem("a");
server.save(itemA);
RMItem itemB = new RMItem("b");
server.save(itemB);
for (int i=0; i<2; i++) {
RMItem subItem = new RMItem();
subItem.setItemGroup(itemA);
server.save(subItem);
}
for (int i=0; i<3; i++) {
RMItem subItem = new RMItem();
subItem.setItemGroup(itemB);
server.save(subItem);
}
RMItemHolder customer = new RMItemHolder();
customer.setItemA(itemA);
customer.setItemB(itemB);
server.save(customer);
// This is OK
{
RMItemHolder requestedCustomer = server.find(RMItemHolder.class)
.setDisableLazyLoading(true)
.fetch("itemA.subItems", FetchConfig.ofQuery())
.fetch("itemB.subItems", FetchConfig.ofQuery())
.where()
.eq("id", customer.getId())
.findOne();
assertEquals(2, requestedCustomer.getItemA().getSubItems().size());
assertEquals(3, requestedCustomer.getItemB().getSubItems().size());
}
}
@Test
void testSubItemListFetch_itemAFirst() {
Database server = DB.getDefault();
RMItem itemA = new RMItem("aa");
server.save(itemA);
RMItem itemB = new RMItem("bb");
server.save(itemB);
for (int i=0; i<2; i++) {
RMItem subItem = new RMItem();
subItem.setItemGroup(itemA);
server.save(subItem);
}
for (int i=0; i<3; i++) {
RMItem subItem = new RMItem();
subItem.setItemGroup(itemB);
server.save(subItem);
}
RMItemHolder customer = new RMItemHolder();
customer.setItemA(itemA);
customer.setItemB(itemB);
server.save(customer);
// This fails because requestedCustomer.getItemB().getSubItems() is not loaded
{
RMItemHolder requestedCustomer = server.find(RMItemHolder.class)
.setDisableLazyLoading(true)
.fetch("itemA.subItems")
.fetch("itemB.subItems")
.where()
.eq("id", customer.getId())
.findOne();
assertEquals(2, requestedCustomer.getItemA().getSubItems().size());
assertEquals(3, requestedCustomer.getItemB().getSubItems().size());
}
}
@Test
void testSubItemListFetch_itemBFirst() {
Database server = DB.getDefault();
RMItem itemA = new RMItem("a");
server.save(itemA);
RMItem itemB = new RMItem("b");
server.save(itemB);
for (int i=0; i<2; i++) {
RMItem subItem = new RMItem();
subItem.setItemGroup(itemA);
server.save(subItem);
}
for (int i=0; i<5; i++) {
RMItem subItem = new RMItem();
subItem.setItemGroup(itemB);
server.save(subItem);
}
RMItemHolder customer = new RMItemHolder();
customer.setItemA(itemA);
customer.setItemB(itemB);
server.save(customer);
// This fails because requestedCustomer.getItemA().getSubItems() is not loaded
{
RMItemHolder requestedCustomer = server.find(RMItemHolder.class)
.setDisableLazyLoading(true)
.fetch("itemB.subItems")
.fetch("itemA.subItems")
.where()
.eq("id", customer.getId())
.findOne();
assertEquals(2, requestedCustomer.getItemA().getSubItems().size());
assertEquals(5, requestedCustomer.getItemB().getSubItems().size());
System.out.println("here");
}
}
}
+1 -1
View File
@@ -1,3 +1,3 @@
ebean.test.platform=nuodb
ebean.test.dbName=testdb
ebean.test.nuodb.version=latest
ebean.test.nuodb.version=4.3.2
+5 -5
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<name>kotlin querybean generator</name>
@@ -29,7 +29,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>test</scope>
</dependency>
@@ -43,7 +43,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>test</scope>
</dependency>
@@ -64,14 +64,14 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-h2</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-ddl-generator</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
<scope>test</scope>
</dependency>
+15 -15
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<artifactId>ebean-platform-all</artifactId>
@@ -14,72 +14,72 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-h2</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-clickhouse</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-db2</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-hana</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-hsqldb</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-mysql</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-mariadb</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-nuodb</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-oracle</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-postgres</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-sqlanywhere</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-sqlite</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-sqlserver</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<artifactId>ebean-platform-clickhouse</artifactId>
@@ -14,12 +14,12 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<artifactId>ebean-platform-db2</artifactId>
@@ -14,12 +14,12 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<artifactId>ebean-platform-h2</artifactId>
@@ -14,7 +14,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<!-- Provided scope so that the H2HistoryTrigger can live in Ebean core
@@ -36,6 +36,6 @@
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<artifactId>ebean-platform-hana</artifactId>
@@ -14,12 +14,12 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<artifactId>ebean-platform-hsqldb</artifactId>
@@ -14,12 +14,12 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-h2</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+4 -4
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<artifactId>ebean-platform-mariadb</artifactId>
@@ -14,18 +14,18 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-mysql</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<artifactId>ebean-platform-mysql</artifactId>
@@ -14,7 +14,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
@@ -27,6 +27,6 @@
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<artifactId>ebean-platform-nuodb</artifactId>
@@ -14,12 +14,12 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<artifactId>ebean-platform-oracle</artifactId>
@@ -14,7 +14,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
@@ -27,6 +27,6 @@
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+1 -1
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<artifactId>platforms</artifactId>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<artifactId>ebean-platform-postgres</artifactId>
@@ -14,7 +14,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
@@ -27,6 +27,6 @@
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<artifactId>ebean-platform-sqlanywhere</artifactId>
@@ -14,12 +14,12 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<artifactId>ebean-platform-sqlite</artifactId>
@@ -14,12 +14,12 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+3 -3
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>13.6.4</version>
<version>13.6.5</version>
</parent>
<artifactId>ebean-platform-sqlserver</artifactId>
@@ -14,7 +14,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.6.4</version>
<version>13.6.5</version>
</dependency>
<dependency>
@@ -27,6 +27,6 @@
</dependencies>
<scm>
<tag>ebean-parent-13.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
</project>
+6 -6
View File
@@ -4,12 +4,12 @@
<parent>
<groupId>org.avaje</groupId>
<artifactId>java11-oss</artifactId>
<version>3.8</version>
<version>3.9</version>
</parent>
<groupId>io.ebean</groupId>
<artifactId>ebean-parent</artifactId>
<version>13.6.4</version>
<version>13.6.5</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.6.4</tag>
<tag>ebean-parent-13.6.5</tag>
</scm>
<licenses>
@@ -44,10 +44,10 @@
<ebean-ddl-runner.version>2.0</ebean-ddl-runner.version>
<ebean-migration-auto.version>1.2</ebean-migration-auto.version>
<ebean-migration.version>13.6.0</ebean-migration.version>
<ebean-test-containers.version>6.1</ebean-test-containers.version>
<ebean-test-containers.version>6.2</ebean-test-containers.version>
<ebean-datasource.version>8.0</ebean-datasource.version>
<ebean-agent.version>13.6.4</ebean-agent.version>
<ebean-maven-plugin.version>13.6.4</ebean-maven-plugin.version>
<ebean-agent.version>13.6.5</ebean-agent.version>
<ebean-maven-plugin.version>13.6.5</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.6.4</version>
<version>13.6.5</version>
</parent>
<name>querybean generator</name>
+4 -4
View File
@@ -15,7 +15,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean</artifactId>
<version>13.6.4-SNAPSHOT</version>
<version>13.6.5-SNAPSHOT</version>
</dependency>
<dependency>
@@ -27,7 +27,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-test</artifactId>
<version>13.6.4-SNAPSHOT</version>
<version>13.6.5-SNAPSHOT</version>
<scope>test</scope>
</dependency>
@@ -53,7 +53,7 @@
<path>
<groupId>io.ebean</groupId>
<artifactId>querybean-generator</artifactId>
<version>13.6.4-SNAPSHOT</version>
<version>13.6.5-SNAPSHOT</version>
</path>
</annotationProcessorPaths>
</configuration>
@@ -66,7 +66,7 @@
<extensions>true</extensions>
<configuration>
<tiles>
<tile>io.ebean.tile:enhancement:13.6.0</tile>
<tile>io.ebean.tile:enhancement:13.6.5</tile>
</tiles>
</configuration>
</plugin>
+2 -2
View File
@@ -35,14 +35,14 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-test</artifactId>
<version>13.6.4-SNAPSHOT</version>
<version>13.6.5-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.6.4-SNAPSHOT</version>
<version>13.6.5-SNAPSHOT</version>
<scope>test</scope>
</dependency>