mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
Compare commits
33
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
385867b9f5 | ||
|
|
4b30c51ff4 | ||
|
|
0969e1427b | ||
|
|
b2349bb044 | ||
|
|
c766756efe | ||
|
|
0e6c6965f0 | ||
|
|
7a17cd0797 | ||
|
|
56acac9f08 | ||
|
|
756e3e4a1c | ||
|
|
669d004d1b | ||
|
|
67fc7cdb48 | ||
|
|
0e548ec1c5 | ||
|
|
493e2d7463 | ||
|
|
ea30c1d43b | ||
|
|
8c800e992d | ||
|
|
d348794d92 | ||
|
|
526e476ba1 | ||
|
|
bdc936b63b | ||
|
|
3179aa23ea | ||
|
|
2aba1835f1 | ||
|
|
4b8eadad1c | ||
|
|
0a43b64f71 | ||
|
|
21c2232d96 | ||
|
|
119b2d4638 | ||
|
|
5cc2685732 | ||
|
|
6d6e417c94 | ||
|
|
be2466003d | ||
|
|
183b601be8 | ||
|
|
5a7e8456e1 | ||
|
|
6e3db70d20 | ||
|
|
2be34a8eb8 | ||
|
|
1c749e55c6 | ||
|
|
73dd4a5648 |
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>composites</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean-clickhouse</name>
|
||||
@@ -16,13 +16,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -35,18 +35,18 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-clickhouse</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>composites</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean-cockroach</name>
|
||||
@@ -16,13 +16,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -35,18 +35,18 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-postgres</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>composites</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean-db2</name>
|
||||
@@ -16,13 +16,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -35,18 +35,18 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-db2</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>composites</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean-h2</name>
|
||||
@@ -16,13 +16,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -35,18 +35,18 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-h2</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>composites</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean-hana</name>
|
||||
@@ -16,13 +16,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -35,18 +35,18 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-hana</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>composites</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean-mariadb</name>
|
||||
@@ -16,13 +16,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -35,18 +35,18 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-mariadb</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>composites</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean-mysql</name>
|
||||
@@ -16,13 +16,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -35,18 +35,18 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-mysql</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>composites</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean-nuodb</name>
|
||||
@@ -16,13 +16,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -35,18 +35,18 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-nuodb</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>composites</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean-oracle</name>
|
||||
@@ -16,13 +16,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -35,18 +35,18 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-oracle</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>composites</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean-postgres</name>
|
||||
@@ -16,13 +16,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -35,18 +35,18 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-postgres</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>composites</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean-sqlite</name>
|
||||
@@ -16,13 +16,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -35,18 +35,18 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-sqlite</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>composites</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean-sqlserver</name>
|
||||
@@ -16,13 +16,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -35,18 +35,18 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-sqlserver</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>composites</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean-yugabyte</name>
|
||||
@@ -16,13 +16,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -35,18 +35,18 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-postgres</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>composites</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean (all platforms)</name>
|
||||
@@ -16,13 +16,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -35,18 +35,18 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-all</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>composites</artifactId>
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean api</name>
|
||||
|
||||
@@ -22,10 +22,9 @@ import java.util.concurrent.Callable;
|
||||
* DB additionally provides a convenient way to use the 'default' Database.
|
||||
* <p>
|
||||
* <h3>Default database</h3>
|
||||
* <p>
|
||||
* One of the Database instances can be registered as the "default database"
|
||||
* and can be obtained using <code>DB.getDefault()</code>
|
||||
* </p>
|
||||
*
|
||||
* <pre>{@code
|
||||
*
|
||||
* Database database = DB.getDefault();
|
||||
@@ -36,7 +35,7 @@ import java.util.concurrent.Callable;
|
||||
* <p>
|
||||
* Multiple database instances can be registered with DB and we can obtain them
|
||||
* using <code>DB.byName()</code>
|
||||
* </p>
|
||||
*
|
||||
* <pre>{@code
|
||||
*
|
||||
* Database hrDatabase = DB.byName("hr");
|
||||
@@ -47,7 +46,6 @@ import java.util.concurrent.Callable;
|
||||
* <p>
|
||||
* DB has methods like {@link #find(Class)} and {@link #save(Object)} which are
|
||||
* just convenience for using the default database.
|
||||
* </p>
|
||||
*
|
||||
* <pre>{@code
|
||||
*
|
||||
@@ -117,15 +115,12 @@ public final class DB {
|
||||
* build the WHERE and HAVING clauses. Alternatively you can use the
|
||||
* ExpressionFactory directly to create expressions to add to the query where
|
||||
* clause.
|
||||
* </p>
|
||||
* <p>
|
||||
* Alternatively you can use the {@link Expr} as a shortcut to the
|
||||
* ExpressionFactory of the 'Default' database.
|
||||
* </p>
|
||||
* <p>
|
||||
* You generally need to the an ExpressionFactory (or {@link Expr}) to build
|
||||
* an expression that uses OR like Expression e = Expr.or(..., ...);
|
||||
* </p>
|
||||
*/
|
||||
public static ExpressionFactory expressionFactory() {
|
||||
return getDefault().expressionFactory();
|
||||
@@ -136,12 +131,10 @@ public final class DB {
|
||||
* <p>
|
||||
* This will only work when a IdGenerator is on this bean type such as a DB
|
||||
* sequence or UUID.
|
||||
* </p>
|
||||
* <p>
|
||||
* For DB's supporting getGeneratedKeys and sequences such as Oracle10 you do
|
||||
* not need to use this method generally. It is made available for more
|
||||
* complex cases where it is useful to get an ID prior to some processing.
|
||||
* </p>
|
||||
*/
|
||||
public static Object nextId(Class<?> beanType) {
|
||||
return getDefault().nextId(beanType);
|
||||
@@ -151,17 +144,14 @@ public final class DB {
|
||||
* Start a transaction with 'REQUIRED' semantics.
|
||||
* <p>
|
||||
* With REQUIRED semantics if an active transaction already exists that transaction will be used.
|
||||
* </p>
|
||||
* <p>
|
||||
* The transaction is stored in a ThreadLocal variable and typically you only
|
||||
* need to use the returned Transaction <em>IF</em> you wish to do things like
|
||||
* use batch mode, change the transaction isolation level, use savepoints or
|
||||
* log comments to the transaction log.
|
||||
* </p>
|
||||
* <p>
|
||||
* Example of using a transaction to span multiple calls to find(), save()
|
||||
* etc.
|
||||
* </p>
|
||||
* Example of using a transaction to span multiple calls to find(), save() etc.
|
||||
*
|
||||
* <pre>{@code
|
||||
*
|
||||
* try (Transaction transaction = DB.beginTransaction()) {
|
||||
@@ -179,7 +169,6 @@ public final class DB {
|
||||
* With Database we can pass the transaction to the various find(), save() and execute()
|
||||
* methods. This gives us the ability to create the transactions externally from Ebean
|
||||
* and use the transaction explicitly via the various methods available on Database.
|
||||
* </p>
|
||||
*/
|
||||
public static Transaction beginTransaction() {
|
||||
return getDefault().beginTransaction();
|
||||
@@ -191,7 +180,6 @@ public final class DB {
|
||||
* You will want to do this if you want multiple Transactions in a single
|
||||
* thread or generally use transactions outside of the TransactionThreadLocal
|
||||
* management.
|
||||
* </p>
|
||||
*/
|
||||
public static Transaction createTransaction() {
|
||||
return getDefault().createTransaction();
|
||||
@@ -211,7 +199,6 @@ public final class DB {
|
||||
* <p>
|
||||
* Note that this provides an try finally alternative to using {@link #executeCall(TxScope, Callable)} or
|
||||
* {@link #execute(TxScope, Runnable)}.
|
||||
* </p>
|
||||
* <p>
|
||||
* <h3>REQUIRES_NEW example:</h3>
|
||||
* <pre>{@code
|
||||
@@ -270,7 +257,7 @@ public final class DB {
|
||||
|
||||
/**
|
||||
* Register a TransactionCallback on the currently active transaction.
|
||||
* <p/>
|
||||
* <p>
|
||||
* If there is no currently active transaction then a PersistenceException is thrown.
|
||||
*
|
||||
* @param transactionCallback the transaction callback to be registered with the current transaction
|
||||
@@ -299,14 +286,12 @@ public final class DB {
|
||||
* rollback the transaction.
|
||||
* <p>
|
||||
* It is preferable to use <em>try with resources</em> rather than this.
|
||||
* </p>
|
||||
* <p>
|
||||
* Useful to put in a finally block to ensure the transaction is ended, rather
|
||||
* than a rollbackTransaction() in each catch block.
|
||||
* </p>
|
||||
* <p>
|
||||
* Code example:
|
||||
* </p>
|
||||
*
|
||||
* <pre>{@code
|
||||
* DB.beginTransaction();
|
||||
* try {
|
||||
@@ -337,7 +322,6 @@ public final class DB {
|
||||
* <p>
|
||||
* When null is passed in for b, then the 'OldValues' of a is used for the
|
||||
* difference comparison.
|
||||
* </p>
|
||||
*/
|
||||
public static Map<String, ValuePair> diff(Object a, Object b) {
|
||||
return getDefault().diff(a, b);
|
||||
@@ -348,18 +332,15 @@ public final class DB {
|
||||
* <p>
|
||||
* If there is no current transaction one will be created and committed for
|
||||
* you automatically.
|
||||
* </p>
|
||||
* <p>
|
||||
* Save can cascade along relationships. For this to happen you need to
|
||||
* specify a cascade of CascadeType.ALL or CascadeType.PERSIST on the
|
||||
* OneToMany, OneToOne or ManyToMany annotation.
|
||||
* </p>
|
||||
* <p>
|
||||
* When a save cascades via a OneToMany or ManyToMany Ebean will automatically
|
||||
* set the 'parent' object to the 'detail' object. In the example below in
|
||||
* saving the order and cascade saving the order details the 'parent' order
|
||||
* will be set against each order detail when it is saved.
|
||||
* </p>
|
||||
*/
|
||||
public static void save(Object bean) throws OptimisticLockException {
|
||||
getDefault().save(bean);
|
||||
@@ -410,11 +391,9 @@ public final class DB {
|
||||
* <b>Stateless updates:</b> Note that the bean does not have to be previously fetched to call
|
||||
* update().You can create a new instance and set some of its properties programmatically for via
|
||||
* JSON/XML marshalling etc. This is described as a 'stateless update'.
|
||||
* </p>
|
||||
* <p>
|
||||
* <b>Optimistic Locking: </b> Note that if the version property is not set when update() is
|
||||
* called then no optimistic locking is performed (internally ConcurrencyMode.NONE is used).
|
||||
* </p>
|
||||
* <p>
|
||||
* <pre>{@code
|
||||
*
|
||||
@@ -531,20 +510,16 @@ public final class DB {
|
||||
* Delete the bean.
|
||||
* <p>
|
||||
* This will return true if the bean was deleted successfully or JDBC batch is being used.
|
||||
* </p>
|
||||
* <p>
|
||||
* If there is no current transaction one will be created and committed for
|
||||
* you automatically.
|
||||
* </p>
|
||||
* <p>
|
||||
* If the bean is configured with <code>@SoftDelete</code> then this will perform a soft
|
||||
* delete rather than a hard/permanent delete.
|
||||
* </p>
|
||||
* <p>
|
||||
* If the Bean does not have a version property (or loaded version property) and
|
||||
* the bean does not exist then this returns false indicating that nothing was
|
||||
* deleted. Note that, if JDBC batch mode is used then this always returns true.
|
||||
* </p>
|
||||
*/
|
||||
public static boolean delete(Object bean) throws OptimisticLockException {
|
||||
return getDefault().delete(bean);
|
||||
@@ -604,7 +579,6 @@ public final class DB {
|
||||
* <p>
|
||||
* Note that this resets OneToMany and ManyToMany properties so that if they
|
||||
* are accessed a lazy load will refresh the many property.
|
||||
* </p>
|
||||
*/
|
||||
public static void refresh(Object bean) {
|
||||
getDefault().refresh(bean);
|
||||
@@ -612,6 +586,7 @@ public final class DB {
|
||||
|
||||
/**
|
||||
* Refresh a 'many' property of a bean.
|
||||
*
|
||||
* <pre>{@code
|
||||
*
|
||||
* Order order = ...;
|
||||
@@ -632,7 +607,7 @@ public final class DB {
|
||||
* Get a reference object.
|
||||
* <p>
|
||||
* This is sometimes described as a proxy (with lazy loading).
|
||||
* </p>
|
||||
*
|
||||
* <pre>{@code
|
||||
*
|
||||
* Product product = DB.getReference(Product.class, 1);
|
||||
@@ -668,7 +643,7 @@ public final class DB {
|
||||
* <p>
|
||||
* Note that the sorting uses a Comparator and Collections.sort(); and does
|
||||
* not invoke a DB query.
|
||||
* </p>
|
||||
*
|
||||
* <pre>{@code
|
||||
*
|
||||
* // find orders and their customers
|
||||
@@ -703,9 +678,8 @@ public final class DB {
|
||||
*
|
||||
* }</pre>
|
||||
* <p>
|
||||
* If you want more control over the query then you can use createQuery() and
|
||||
* Query.findOne();
|
||||
* </p>
|
||||
* If you want more control over the query then you can use createQuery() and Query.findOne();
|
||||
*
|
||||
* <pre>{@code
|
||||
*
|
||||
* // ... additionally fetching customer, customer shipping address,
|
||||
@@ -745,15 +719,12 @@ public final class DB {
|
||||
}
|
||||
|
||||
/**
|
||||
* Look to execute a native sql query that does not returns beans but instead
|
||||
* returns SqlRow or direct access to ResultSet (see {@link SqlQuery#findList(RowMapper)}.
|
||||
*
|
||||
* Look to execute a native sql query that does not return beans but instead
|
||||
* returns SqlRow or uses {@link RowMapper}.
|
||||
* <p>
|
||||
* Refer to {@link DtoQuery} for native sql queries returning DTO beans.
|
||||
* </p>
|
||||
* <p>
|
||||
* Refer to {@link #findNative(Class, String)} for native sql queries returning entity beans.
|
||||
* </p>
|
||||
*/
|
||||
public static SqlQuery sqlQuery(String sql) {
|
||||
return getDefault().sqlQuery(sql);
|
||||
@@ -764,11 +735,9 @@ public final class DB {
|
||||
* <p>
|
||||
* Use this to execute a Insert Update or Delete statement. The statement will
|
||||
* be native to the database and contain database table and column names.
|
||||
* </p>
|
||||
*
|
||||
* <p>
|
||||
* See {@link SqlUpdate} for example usage.
|
||||
* </p>
|
||||
*
|
||||
* @return The SqlUpdate instance to set parameters and execute
|
||||
*/
|
||||
@@ -792,10 +761,9 @@ public final class DB {
|
||||
* <p>
|
||||
* The orm update differs from the sql update in that it you can use the bean
|
||||
* name and bean property names rather than table and column names.
|
||||
* </p>
|
||||
* <p>
|
||||
* An example:
|
||||
* </p>
|
||||
*
|
||||
* <pre>{@code
|
||||
*
|
||||
* // The bean name and properties - "topic","postCount" and "id"
|
||||
@@ -828,7 +796,6 @@ public final class DB {
|
||||
* Create a named query.
|
||||
* <p>
|
||||
* For RawSql the named query is expected to be in ebean.xml.
|
||||
* </p>
|
||||
*
|
||||
* @param beanType The type of entity bean
|
||||
* @param namedQuery The name of the query
|
||||
@@ -844,15 +811,12 @@ public final class DB {
|
||||
* <p>
|
||||
* You can use the methods on the Query object to specify fetch paths,
|
||||
* predicates, order by, limits etc.
|
||||
* </p>
|
||||
* <p>
|
||||
* You then use findList(), findSet(), findMap() and findOne() to execute
|
||||
* the query and return the collection or bean.
|
||||
* </p>
|
||||
* <p>
|
||||
* Note that a query executed by {@link Query#findList()} etc will execute against
|
||||
* the same database from which is was created.
|
||||
* </p>
|
||||
*
|
||||
* @param beanType the class of entity to be fetched
|
||||
* @return A ORM Query for this beanType
|
||||
@@ -904,7 +868,6 @@ public final class DB {
|
||||
* This is actually the same as {@link #createQuery(Class)}. The reason it
|
||||
* exists is that people used to JPA will probably be looking for a
|
||||
* createQuery method (the same as entityManager).
|
||||
* </p>
|
||||
*
|
||||
* @param beanType the type of entity bean to find
|
||||
* @return A ORM Query object for this beanType
|
||||
@@ -917,7 +880,7 @@ public final class DB {
|
||||
* Create a query using native SQL.
|
||||
* <p>
|
||||
* The native SQL can contain named parameters or positioned parameters.
|
||||
* </p>
|
||||
*
|
||||
* <pre>{@code
|
||||
*
|
||||
* String sql = "select c.id, c.name from customer c where c.name like ? order by c.name";
|
||||
@@ -942,7 +905,6 @@ public final class DB {
|
||||
* <p>
|
||||
* DTO beans are just normal bean like classes with public constructor(s) and setters.
|
||||
* They do not need to be registered with Ebean before use.
|
||||
* </p>
|
||||
*
|
||||
* @param dtoType The type of the DTO bean the rows will be mapped into.
|
||||
* @param sql The SQL query to execute.
|
||||
@@ -979,10 +941,8 @@ public final class DB {
|
||||
* going back to the database.
|
||||
* <p>
|
||||
* This produces and returns a new list with the sort and filters applied.
|
||||
* </p>
|
||||
* <p>
|
||||
* Refer to {@link Filter} for an example of its use.
|
||||
* </p>
|
||||
*/
|
||||
public static <T> Filter<T> filter(Class<T> beanType) {
|
||||
return getDefault().filter(beanType);
|
||||
@@ -993,7 +953,7 @@ public final class DB {
|
||||
* <p>
|
||||
* The scope can control the transaction type, isolation and rollback
|
||||
* semantics.
|
||||
* </p>
|
||||
*
|
||||
* <pre>{@code
|
||||
*
|
||||
* // set specific transactional scope settings
|
||||
@@ -1017,7 +977,7 @@ public final class DB {
|
||||
* <p>
|
||||
* The default scope runs with REQUIRED and by default will rollback on any
|
||||
* exception (checked or runtime).
|
||||
* </p>
|
||||
*
|
||||
* <pre>{@code
|
||||
*
|
||||
* DB.execute(() -> {
|
||||
@@ -1042,7 +1002,7 @@ public final class DB {
|
||||
* <p>
|
||||
* The scope can control the transaction type, isolation and rollback
|
||||
* semantics.
|
||||
* </p>
|
||||
*
|
||||
* <pre>{@code
|
||||
*
|
||||
* // set specific transactional scope settings
|
||||
@@ -1066,11 +1026,10 @@ public final class DB {
|
||||
* <p>
|
||||
* The default scope runs with REQUIRED and by default will rollback on any
|
||||
* exception (checked or runtime).
|
||||
* </p>
|
||||
* <p>
|
||||
* This is basically the same as TxRunnable except that it returns an Object
|
||||
* (and you specify the return type via generics).
|
||||
* </p>
|
||||
*
|
||||
* <pre>{@code
|
||||
*
|
||||
* DB.executeCall(() -> {
|
||||
@@ -1099,23 +1058,19 @@ public final class DB {
|
||||
* <p>
|
||||
* If you use DB.execute(UpdateSql) then the table modification information
|
||||
* is automatically deduced and you do not need to call this method yourself.
|
||||
* </p>
|
||||
* <p>
|
||||
* This information is used to invalidate objects out of the cache and
|
||||
* potentially text indexes. This information is also automatically broadcast
|
||||
* across the cluster.
|
||||
* </p>
|
||||
* <p>
|
||||
* If there is a transaction then this information is placed into the current
|
||||
* transactions event information. When the transaction is committed this
|
||||
* information is registered (with the transaction manager). If this
|
||||
* transaction is rolled back then none of the transaction event information
|
||||
* registers including the information you put in via this method.
|
||||
* </p>
|
||||
* <p>
|
||||
* If there is NO current transaction when you call this method then this
|
||||
* information is registered immediately (with the transaction manager).
|
||||
* </p>
|
||||
*
|
||||
* @param tableName the name of the table that was modified
|
||||
* @param inserts true if rows where inserted into the table
|
||||
@@ -1130,7 +1085,6 @@ public final class DB {
|
||||
* Return the BeanState for a given entity bean.
|
||||
* <p>
|
||||
* This will return null if the bean is not an enhanced entity bean.
|
||||
* </p>
|
||||
*/
|
||||
public static BeanState beanState(Object bean) {
|
||||
return getDefault().beanState(bean);
|
||||
|
||||
@@ -18,7 +18,7 @@ import java.util.Set;
|
||||
* <em>java.util.Collection</em>. The reason being that java.util.Map is not a
|
||||
* Collection. I realise this makes this name confusing so I apologise for that.
|
||||
*/
|
||||
public interface BeanCollection<E> extends Serializable {
|
||||
public interface BeanCollection<E> extends Serializable, ToStringAware {
|
||||
|
||||
enum ModifyListenMode {
|
||||
/**
|
||||
|
||||
@@ -11,7 +11,7 @@ import java.io.Serializable;
|
||||
* general application consumption.
|
||||
* </p>
|
||||
*/
|
||||
public interface EntityBean extends Serializable {
|
||||
public interface EntityBean extends Serializable, ToStringAware {
|
||||
|
||||
/**
|
||||
* Return all the property names in defined order.
|
||||
@@ -109,4 +109,8 @@ public interface EntityBean extends Serializable {
|
||||
throw new NotEnhancedException();
|
||||
}
|
||||
|
||||
@Override
|
||||
default void toString(ToStringBuilder builder) {
|
||||
throw new NotEnhancedException();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,11 @@ import io.ebean.ValuePair;
|
||||
|
||||
import javax.persistence.EntityNotFoundException;
|
||||
import javax.persistence.PersistenceException;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.net.URL;
|
||||
@@ -910,9 +915,38 @@ public final class EntityBeanIntercept implements Serializable {
|
||||
// use the string format to determine if dirty
|
||||
return !obj1.toString().equals(obj2.toString());
|
||||
}
|
||||
if (obj1 instanceof File && obj2 instanceof File) {
|
||||
File file1 = (File) obj1;
|
||||
File file2 = (File) obj2;
|
||||
if (file1.exists() && file2.exists() && file1.length() == file2.length()) {
|
||||
return notEqualContent(file1, file2);
|
||||
}
|
||||
}
|
||||
return !obj1.equals(obj2);
|
||||
}
|
||||
|
||||
private static boolean notEqualContent(File file1, File file2) {
|
||||
try (InputStream is1 = new FileInputStream(file1); InputStream is2 = new FileInputStream(file2)) {
|
||||
byte[] buf1 = new byte[16384];
|
||||
byte[] buf2 = new byte[16384];
|
||||
int len1;
|
||||
int len2;
|
||||
while ((len1 = is1.read(buf1)) != -1 && (len2 = is2.read(buf2)) != -1) {
|
||||
if (len1 != len2) {
|
||||
return true;
|
||||
}
|
||||
if (!Arrays.equals(buf1, buf2)) {
|
||||
// it does not matter, if we compare more than len1/len2 as the remainig
|
||||
// bytes in the buffers are either 0 or equals from the prev. loop.
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
} catch (IOException e) {
|
||||
return true; // handle them as "not equals"
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when a BeanCollection is initialised automatically.
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package io.ebean.bean;
|
||||
|
||||
/**
|
||||
* A type that can participate in building toString content with ToStringBuilder.
|
||||
*/
|
||||
public interface ToStringAware {
|
||||
|
||||
/**
|
||||
* Append to the ToStringBuilder.
|
||||
*/
|
||||
void toString(ToStringBuilder builder);
|
||||
}
|
||||
@@ -0,0 +1,163 @@
|
||||
package io.ebean.bean;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.IdentityHashMap;
|
||||
|
||||
/**
|
||||
* Helps build toString content taking into account recursion.
|
||||
* <p>
|
||||
* That is, it detects and handles the case where there are relationships that recurse
|
||||
* and would otherwise become an infinite loop (e.g. bidirectional parent child).
|
||||
*/
|
||||
public final class ToStringBuilder {
|
||||
|
||||
/**
|
||||
* The max number of objects that we allow before stopping content being appended.
|
||||
*/
|
||||
private static final int MAX = 100;
|
||||
|
||||
/**
|
||||
* Max length of content in string form added for any given value.
|
||||
*/
|
||||
private static final int TRIM_LENGTH = 500;
|
||||
|
||||
/**
|
||||
* The max total content after which we stop content being appended.
|
||||
*/
|
||||
private static final int MAX_TOTAL_CONTENT = 2000;
|
||||
|
||||
private final IdentityHashMap<Object, Integer> id = new IdentityHashMap<>();
|
||||
private final StringBuilder sb = new StringBuilder(50);
|
||||
private boolean first = true;
|
||||
private int counter;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set of an object being added.
|
||||
*/
|
||||
public void start(Object bean) {
|
||||
if (counter == 0) {
|
||||
id.putIfAbsent(bean, 0);
|
||||
}
|
||||
if (counter <= MAX) {
|
||||
sb.append(bean.getClass().getSimpleName()).append("@").append(counter).append("(");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a property as name value pair.
|
||||
*/
|
||||
public void add(String name, Object value) {
|
||||
if (value != null && counter <= MAX) {
|
||||
if (value instanceof BeanCollection) {
|
||||
if (((BeanCollection<?>)value).isReference()) {
|
||||
// suppress unloaded bean collections
|
||||
return;
|
||||
}
|
||||
}
|
||||
key(name);
|
||||
value(value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add raw content.
|
||||
*/
|
||||
public void addRaw(String content) {
|
||||
sb.append(content);
|
||||
}
|
||||
|
||||
/**
|
||||
* End of an object.
|
||||
*/
|
||||
public void end() {
|
||||
if (counter <= MAX) {
|
||||
sb.append(")");
|
||||
}
|
||||
}
|
||||
|
||||
private void key(String name) {
|
||||
if (counter > MAX) {
|
||||
return;
|
||||
}
|
||||
if (first) {
|
||||
first = false;
|
||||
} else {
|
||||
sb.append(", ");
|
||||
}
|
||||
sb.append(name).append(":");
|
||||
}
|
||||
|
||||
private void value(Object value) {
|
||||
if (counter > MAX) {
|
||||
return;
|
||||
}
|
||||
if (value instanceof ToStringAware) {
|
||||
if (value instanceof BeanCollection) {
|
||||
((ToStringAware) value).toString(this);
|
||||
} else if (push(value)) {
|
||||
((ToStringAware) value).toString(this);
|
||||
}
|
||||
} else if (value instanceof Collection) {
|
||||
addCollection((Collection<?>) value);
|
||||
} else {
|
||||
String content = String.valueOf(value);
|
||||
if (content.length() > TRIM_LENGTH) {
|
||||
content = content.substring(0, TRIM_LENGTH) + " <trimmed>";
|
||||
}
|
||||
sb.append(content);
|
||||
if (sb.length() >= MAX_TOTAL_CONTENT) {
|
||||
sb.append(" ...");
|
||||
counter += MAX;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a collection of values.
|
||||
*/
|
||||
public void addCollection(Collection<?> c) {
|
||||
if (c == null || c.isEmpty()) {
|
||||
sb.append("[]");
|
||||
return;
|
||||
}
|
||||
boolean firstElement = true;
|
||||
sb.append("[");
|
||||
for (Object o : c) {
|
||||
if (firstElement) {
|
||||
firstElement = false;
|
||||
} else {
|
||||
sb.append(", ");
|
||||
}
|
||||
value(o);
|
||||
if (counter > MAX) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
sb.append("]");
|
||||
}
|
||||
|
||||
private boolean push(Object bean) {
|
||||
if (counter > MAX) {
|
||||
return false;
|
||||
}
|
||||
if (counter == MAX) {
|
||||
sb.append(" ...");
|
||||
counter++;
|
||||
return false;
|
||||
}
|
||||
Integer idx = id.putIfAbsent(bean, counter++);
|
||||
if (idx != null) {
|
||||
--counter;
|
||||
sb.append(bean.getClass().getSimpleName()).append("@").append(idx);
|
||||
return false;
|
||||
}
|
||||
first = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,9 +1,6 @@
|
||||
package io.ebean.common;
|
||||
|
||||
import io.ebean.bean.BeanCollection;
|
||||
import io.ebean.bean.BeanCollectionAdd;
|
||||
import io.ebean.bean.BeanCollectionLoader;
|
||||
import io.ebean.bean.EntityBean;
|
||||
import io.ebean.bean.*;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
@@ -47,6 +44,11 @@ public final class BeanList<E> extends AbstractBeanCollection<E> implements List
|
||||
super(loader, ownerBean, propertyName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toString(ToStringBuilder builder) {
|
||||
builder.addCollection(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset(EntityBean ownerBean, String propertyName) {
|
||||
this.ownerBean = ownerBean;
|
||||
@@ -191,18 +193,11 @@ public final class BeanList<E> extends AbstractBeanCollection<E> implements List
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder(50);
|
||||
sb.append("BeanList ");
|
||||
if (isReadOnly()) {
|
||||
sb.append("readOnly ");
|
||||
}
|
||||
if (list == null) {
|
||||
sb.append("deferred ");
|
||||
return "BeanList<deferred>";
|
||||
} else {
|
||||
sb.append("size[").append(list.size()).append("] ");
|
||||
sb.append("list").append(list);
|
||||
return list.toString();
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -3,6 +3,7 @@ package io.ebean.common;
|
||||
import io.ebean.bean.BeanCollection;
|
||||
import io.ebean.bean.BeanCollectionLoader;
|
||||
import io.ebean.bean.EntityBean;
|
||||
import io.ebean.bean.ToStringBuilder;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
@@ -40,6 +41,19 @@ public final class BeanMap<K, E> extends AbstractBeanCollection<E> implements Ma
|
||||
super(ebeanServer, ownerBean, propertyName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toString(ToStringBuilder builder) {
|
||||
if (map == null || map.isEmpty()) {
|
||||
builder.addRaw("{}");
|
||||
} else {
|
||||
builder.addRaw("{");
|
||||
for (Entry<K, E> entry : map.entrySet()) {
|
||||
builder.add(String.valueOf(entry.getKey()), entry.getValue());
|
||||
}
|
||||
builder.addRaw("}");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset(EntityBean ownerBean, String propertyName) {
|
||||
this.ownerBean = ownerBean;
|
||||
@@ -183,27 +197,20 @@ public final class BeanMap<K, E> extends AbstractBeanCollection<E> implements Ma
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder(50);
|
||||
sb.append("BeanMap ");
|
||||
if (isReadOnly()) {
|
||||
sb.append("readOnly ");
|
||||
}
|
||||
if (map == null) {
|
||||
sb.append("deferred ");
|
||||
return "BeanMap<deferred>";
|
||||
} else {
|
||||
sb.append("size[").append(map.size()).append("]");
|
||||
sb.append(" map").append(map);
|
||||
return map.toString();
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Equal if obj is a Map and equal in a Map sense.
|
||||
* Equal if object is a Map and equal in a Map sense.
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
public boolean equals(Object object) {
|
||||
init();
|
||||
return map.equals(obj);
|
||||
return map.equals(object);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
package io.ebean.common;
|
||||
|
||||
import io.ebean.bean.BeanCollection;
|
||||
import io.ebean.bean.BeanCollectionAdd;
|
||||
import io.ebean.bean.BeanCollectionLoader;
|
||||
import io.ebean.bean.EntityBean;
|
||||
import io.ebean.bean.*;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Collection;
|
||||
@@ -41,6 +38,11 @@ public final class BeanSet<E> extends AbstractBeanCollection<E> implements Set<E
|
||||
super(loader, ownerBean, propertyName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toString(ToStringBuilder builder) {
|
||||
builder.addCollection(set);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset(EntityBean ownerBean, String propertyName) {
|
||||
this.ownerBean = ownerBean;
|
||||
@@ -169,18 +171,11 @@ public final class BeanSet<E> extends AbstractBeanCollection<E> implements Set<E
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder(50);
|
||||
sb.append("BeanSet ");
|
||||
if (isReadOnly()) {
|
||||
sb.append("readOnly ");
|
||||
}
|
||||
if (set == null) {
|
||||
sb.append("deferred ");
|
||||
return "BeanSet<deferred>";
|
||||
} else {
|
||||
sb.append("size[").append(set.size()).append("]");
|
||||
sb.append(" set").append(set);
|
||||
return set.toString();
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -19,6 +19,7 @@ module io.ebean.api {
|
||||
|
||||
requires static io.ebean.types;
|
||||
requires static com.fasterxml.jackson.core;
|
||||
requires static com.fasterxml.jackson.databind;
|
||||
requires static javax.servlet.api;
|
||||
|
||||
exports io.ebean;
|
||||
|
||||
@@ -0,0 +1,223 @@
|
||||
package io.ebean.bean;
|
||||
|
||||
import io.ebean.common.BeanList;
|
||||
import io.ebean.common.BeanMap;
|
||||
import io.ebean.common.BeanSet;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class ToStringBuilderTest {
|
||||
|
||||
@Test
|
||||
void basic() {
|
||||
ToStringBuilder builder = new ToStringBuilder();
|
||||
builder.start(new Object());
|
||||
builder.end();
|
||||
assertThat(builder.toString()).isEqualTo("Object@0()");
|
||||
}
|
||||
|
||||
@Test
|
||||
void fields() {
|
||||
ToStringBuilder builder = new ToStringBuilder();
|
||||
builder.start(new Object());
|
||||
builder.add("a", 1);
|
||||
builder.add("b", "B");
|
||||
builder.end();
|
||||
assertThat(builder.toString()).isEqualTo("Object@0(a:1, b:B)");
|
||||
}
|
||||
|
||||
@Test
|
||||
void max100Beans_expect_noMoreContentAfterMax100() {
|
||||
|
||||
String loop100 = addLoopForMaxBeans(100);
|
||||
String loop101 = addLoopForMaxBeans(101);
|
||||
String loop900 = addLoopForMaxBeans(900);
|
||||
|
||||
assertThat(loop100).isEqualTo(loop101);
|
||||
assertThat(loop101).isEqualTo(loop900);
|
||||
}
|
||||
|
||||
private String addLoopForMaxBeans(int loopMax) {
|
||||
ToStringBuilder builder = new ToStringBuilder();
|
||||
builder.start(new Object());
|
||||
for (int i = 0; i <= loopMax; i++) {
|
||||
addForMax(builder, i);
|
||||
}
|
||||
builder.end();
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
private void addForMax(ToStringBuilder builder, int i) {
|
||||
builder.add("c", new B(i));
|
||||
}
|
||||
|
||||
@Test
|
||||
void maxContent_expect_noMoreContentAfterMax2000() {
|
||||
String loop23 = addContentLoop(23);
|
||||
String loop24 = addContentLoop(24);
|
||||
String loop25 = addContentLoop(25);
|
||||
|
||||
assertThat(loop23).isEqualTo(loop24);
|
||||
assertThat(loop23).isEqualTo(loop25);
|
||||
}
|
||||
|
||||
private String addContentLoop(int loopMax) {
|
||||
ToStringBuilder builder = new ToStringBuilder();
|
||||
builder.start(new Object());
|
||||
for (int i = 0; i <= loopMax; i++) {
|
||||
addForMaxContent(builder, i);
|
||||
}
|
||||
builder.end();
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
private void addForMaxContent(ToStringBuilder builder, int i) {
|
||||
builder.add("someContentThatAddsUp", new Recurse(i, "SomeContentThatAddsUp_SomeContentThatAddsUp!!"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void add_referenceBeanCollection_expect_nothingAdded() {
|
||||
ToStringBuilder builder = new ToStringBuilder();
|
||||
builder.add("ref", new BeanList<>(null));
|
||||
assertThat(builder.toString()).isEqualTo("");
|
||||
}
|
||||
|
||||
@Test
|
||||
void addCollection_some() {
|
||||
ToStringBuilder builder = new ToStringBuilder();
|
||||
builder.addCollection( new BeanList<>(List.of("A","B")));
|
||||
assertThat(builder.toString()).isEqualTo("[A, B]");
|
||||
}
|
||||
|
||||
@Test
|
||||
void addCollection_null() {
|
||||
ToStringBuilder builder = new ToStringBuilder();
|
||||
builder.addCollection(null);
|
||||
assertThat(builder.toString()).isEqualTo("[]");
|
||||
}
|
||||
|
||||
@Test
|
||||
void addCollection_empty() {
|
||||
ToStringBuilder builder = new ToStringBuilder();
|
||||
builder.addCollection(Collections.emptyList());
|
||||
assertThat(builder.toString()).isEqualTo("[]");
|
||||
}
|
||||
|
||||
@Test
|
||||
void flatBean() {
|
||||
Recurse instance0 = new Recurse(42, "java");
|
||||
assertThat(instance0.toString()).isEqualTo("Recurse@0(id:42, nm:java)");
|
||||
}
|
||||
|
||||
@Test
|
||||
void recursive_expect_reference() {
|
||||
Recurse instance0 = new Recurse(42, "java");
|
||||
instance0.other = instance0;
|
||||
|
||||
assertThat(instance0.toString()).isEqualTo("Recurse@0(id:42, nm:java, other:Recurse@0)");
|
||||
}
|
||||
|
||||
@Test
|
||||
void notRecursive() {
|
||||
Recurse instance0 = new Recurse(42, "java");
|
||||
instance0.other = new Recurse(43, "jvm");
|
||||
assertThat(instance0.toString()).isEqualTo("Recurse@0(id:42, nm:java, other:Recurse@1(id:43, nm:jvm))");
|
||||
}
|
||||
|
||||
@Test
|
||||
void beanList_null_empty() {
|
||||
assertThat(toStringFor(new BeanList<String>(null))).isEqualTo("[]");
|
||||
assertThat(toStringFor(new BeanList<String>(Collections.emptyList()))).isEqualTo("[]");
|
||||
}
|
||||
|
||||
@Test
|
||||
void beanSet_null_empty() {
|
||||
assertThat(toStringFor(new BeanSet<String>(null))).isEqualTo("[]");
|
||||
assertThat(toStringFor(new BeanSet<String>(Collections.emptySet()))).isEqualTo("[]");
|
||||
}
|
||||
|
||||
@Test
|
||||
void beanMap_null_empty() {
|
||||
assertThat(toStringFor(new BeanMap<String, String>(null))).isEqualTo("{}");
|
||||
assertThat(toStringFor(new BeanMap<String, String>(Collections.emptyMap()))).isEqualTo("{}");
|
||||
}
|
||||
|
||||
@Test
|
||||
void beanList_some() {
|
||||
BeanList<Recurse> list = new BeanList<>(List.of(new Recurse(1, "a"), new Recurse(2, "b")));
|
||||
assertThat(toStringFor(list)).isEqualTo("[Recurse@1(id:1, nm:a), Recurse@2(id:2, nm:b)]");
|
||||
}
|
||||
|
||||
@Test
|
||||
void beanSet_some() {
|
||||
BeanSet<Recurse> list = new BeanSet<>(new LinkedHashSet<>(List.of(new Recurse(1, "a"), new Recurse(2, "b"))));
|
||||
assertThat(toStringFor(list)).isEqualTo("[Recurse@1(id:1, nm:a), Recurse@2(id:2, nm:b)]");
|
||||
}
|
||||
|
||||
@Test
|
||||
void beanMap_some() {
|
||||
Map<String, Recurse> under = new LinkedHashMap<>();
|
||||
under.put("a", new Recurse(1, "a"));
|
||||
under.put("b", new Recurse(2, "b"));
|
||||
BeanMap<String, Recurse> list = new BeanMap<>(under);
|
||||
assertThat(toStringFor(list)).isEqualTo("{a:Recurse@1(id:1, nm:a), b:Recurse@2(id:2, nm:b)}");
|
||||
}
|
||||
|
||||
private String toStringFor(ToStringAware aware) {
|
||||
ToStringBuilder builder = new ToStringBuilder();
|
||||
aware.toString(builder);
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
static final class Recurse implements ToStringAware {
|
||||
|
||||
final int id;
|
||||
final String nm;
|
||||
Recurse other;
|
||||
|
||||
Recurse(int id, String nm) {
|
||||
this.id = id;
|
||||
this.nm = nm;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
ToStringBuilder builder = new ToStringBuilder();
|
||||
toString(builder);
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toString(ToStringBuilder builder) {
|
||||
builder.start(this);
|
||||
builder.add("id", id);
|
||||
builder.add("nm", nm);
|
||||
builder.add("other", other);
|
||||
builder.end();
|
||||
}
|
||||
}
|
||||
|
||||
static final class B implements ToStringAware {
|
||||
|
||||
final int id;
|
||||
|
||||
B(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
ToStringBuilder builder = new ToStringBuilder();
|
||||
toString(builder);
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toString(ToStringBuilder builder) {
|
||||
builder.start(this);
|
||||
builder.add("b", id);
|
||||
builder.end();
|
||||
}
|
||||
}
|
||||
}
|
||||
+7
-12
@@ -1,4 +1,4 @@
|
||||
package io.ebean.xtest.config;
|
||||
package io.ebean.config;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import io.ebean.annotation.MutationDetection;
|
||||
@@ -17,11 +17,10 @@ import java.util.Properties;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
public class DatabaseConfigTest {
|
||||
class DatabaseConfigTest {
|
||||
|
||||
@Test
|
||||
public void testLoadFromEbeanProperties() {
|
||||
|
||||
void testLoadFromEbeanProperties() {
|
||||
DatabaseConfig config = new DatabaseConfig();
|
||||
config.loadFromProperties();
|
||||
|
||||
@@ -30,8 +29,7 @@ public class DatabaseConfigTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void evalPropertiesInput() {
|
||||
|
||||
void evalPropertiesInput() {
|
||||
String home = System.getProperty("user.home");
|
||||
String fileSeparator = System.getProperty("file.separator");
|
||||
|
||||
@@ -46,8 +44,7 @@ public class DatabaseConfigTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLoadWithProperties() {
|
||||
|
||||
void testLoadWithProperties() {
|
||||
DatabaseConfig config = new DatabaseConfig();
|
||||
config.setPersistBatch(PersistBatch.NONE);
|
||||
config.setPersistBatchOnCascade(PersistBatch.NONE);
|
||||
@@ -154,8 +151,7 @@ public class DatabaseConfigTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_defaults() {
|
||||
|
||||
void test_defaults() {
|
||||
DatabaseConfig config = new DatabaseConfig();
|
||||
assertTrue(config.isIdGeneratorAutomatic());
|
||||
assertTrue(config.isDefaultServer());
|
||||
@@ -186,8 +182,7 @@ public class DatabaseConfigTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_putServiceObject() {
|
||||
|
||||
void test_putServiceObject() {
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
|
||||
DatabaseConfig config = new DatabaseConfig();
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</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.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
|
||||
<name>ebean autotune</name>
|
||||
@@ -26,7 +26,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-h2</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<tiles>
|
||||
<tile>io.ebean.tile:enhancement:13.1.0</tile>
|
||||
<tile>io.ebean.tile:enhancement:13.3.0</tile>
|
||||
</tiles>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
+15
-15
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean bom</name>
|
||||
@@ -71,88 +71,88 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core-type</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-ddl-generator</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-externalmapping-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-externalmapping-xml</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-autotune</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>querybean-generator</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>kotlin-querybean-generator</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-test</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-postgis</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-redis</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-core-type</artifactId>
|
||||
@@ -16,7 +16,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
||||
+8
-8
@@ -3,7 +3,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</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.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
|
||||
<dependencies>
|
||||
@@ -41,19 +41,19 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core-type</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-externalmapping-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -144,21 +144,21 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-h2</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-postgres</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-sqlserver</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
@@ -391,6 +391,11 @@ public interface SpiQuery<T> extends Query<T>, SpiQueryFetch, TxnProfileEventCod
|
||||
*/
|
||||
void incrementAsOfTableCount();
|
||||
|
||||
/**
|
||||
* Increment the counter of tables used in 'As Of' query.
|
||||
*/
|
||||
void incrementAsOfTableCount(int asOfTableCount);
|
||||
|
||||
/**
|
||||
* Return the table alias used for the base table.
|
||||
*/
|
||||
|
||||
@@ -524,7 +524,7 @@ public final class OrmQueryRequest<T> extends BeanRequest implements SpiOrmQuery
|
||||
}
|
||||
if (result instanceof BeanList) {
|
||||
OrderBy<T> orderBy = query.getOrderBy();
|
||||
if (orderBy != null) {
|
||||
if (orderBy != null && !orderBy.isEmpty()) {
|
||||
// in memory sort after merging the cache hits with the DB hits
|
||||
beanDescriptor.sort(((BeanList<T>) result).getActualList(), orderBy.toStringFormat());
|
||||
}
|
||||
@@ -543,7 +543,7 @@ public final class OrmQueryRequest<T> extends BeanRequest implements SpiOrmQuery
|
||||
@Override
|
||||
public List<T> beanCacheHits() {
|
||||
OrderBy<T> orderBy = query.getOrderBy();
|
||||
if (orderBy != null) {
|
||||
if (orderBy != null && !orderBy.isEmpty()) {
|
||||
beanDescriptor.sort(cacheBeans, orderBy.toStringFormat());
|
||||
}
|
||||
return cacheBeans;
|
||||
@@ -552,7 +552,7 @@ public final class OrmQueryRequest<T> extends BeanRequest implements SpiOrmQuery
|
||||
@Override
|
||||
public <K> Map<K, T> beanCacheHitsAsMap() {
|
||||
OrderBy<T> orderBy = query.getOrderBy();
|
||||
if (orderBy != null) {
|
||||
if (orderBy != null && !orderBy.isEmpty()) {
|
||||
beanDescriptor.sort(cacheBeans, orderBy.toStringFormat());
|
||||
}
|
||||
return cacheBeansToMap();
|
||||
|
||||
@@ -119,6 +119,11 @@ public interface DbSqlContext {
|
||||
*/
|
||||
boolean isIncludeSoftDelete();
|
||||
|
||||
/**
|
||||
* Return the count of history table AS OF predicates added via joins.
|
||||
*/
|
||||
int asOfTableCount();
|
||||
|
||||
/**
|
||||
* Return true if the query is a 'asDraft' query.
|
||||
*/
|
||||
|
||||
+21
-4
@@ -7,12 +7,14 @@ import javax.persistence.DiscriminatorType;
|
||||
import java.sql.Types;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
/**
|
||||
* Represents a node in the Inheritance tree.
|
||||
* Holds information regarding Super Subclass support.
|
||||
*/
|
||||
public final class DeployInheritInfo {
|
||||
public final class DeployInheritInfo implements Comparable<DeployInheritInfo> {
|
||||
|
||||
/**
|
||||
* the default discriminator column according to the JPA 1.0 spec.
|
||||
@@ -27,7 +29,7 @@ public final class DeployInheritInfo {
|
||||
private String columnDefn;
|
||||
private final Class<?> type;
|
||||
private Class<?> parent;
|
||||
private final ArrayList<DeployInheritInfo> children = new ArrayList<>();
|
||||
private final Set<DeployInheritInfo> children = new TreeSet<>();
|
||||
|
||||
/**
|
||||
* Create for a given type.
|
||||
@@ -74,7 +76,7 @@ public final class DeployInheritInfo {
|
||||
/**
|
||||
* Return the child nodes.
|
||||
*/
|
||||
public List<DeployInheritInfo> children() {
|
||||
public Set<DeployInheritInfo> children() {
|
||||
return children;
|
||||
}
|
||||
|
||||
@@ -251,7 +253,22 @@ public final class DeployInheritInfo {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "InheritInfo[" + type.getName() + "]" + " root[" + parent.getName() + "]" + " disValue[" + discriminatorStringValue + "]";
|
||||
String root = parent == null ? null : parent.getName();
|
||||
String name = type == null ? null : type.getName();
|
||||
return "InheritInfo[" + name + "]" + " root[" + root + "]" + " disValue[" + discriminatorStringValue + "]";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(DeployInheritInfo o) {
|
||||
if (o == this || o.discriminatorStringValue == null && discriminatorStringValue == null) {
|
||||
return 0;
|
||||
} else if (o.discriminatorStringValue == null) {
|
||||
return 1;
|
||||
} else if (discriminatorStringValue == null) {
|
||||
return -1;
|
||||
} else {
|
||||
return discriminatorStringValue.compareTo(o.discriminatorStringValue);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -647,6 +647,7 @@ final class CQueryBuilder {
|
||||
if (query.isAsOfBaseTable() && !historySupport.isStandardsBased()) {
|
||||
appendAndOrWhere();
|
||||
sb.append(historySupport.getAsOfPredicate(request.baseTableAlias()));
|
||||
query.incrementAsOfTableCount();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -18,45 +18,27 @@ final class DefaultDbSqlContext implements DbSqlContext {
|
||||
private static final String tableAliasManyPlaceHolder = "${mta}";
|
||||
|
||||
private final String columnAliasPrefix;
|
||||
|
||||
private final ArrayStack<String> tableAliasStack = new ArrayStack<>();
|
||||
|
||||
private final ArrayStack<String> joinStack = new ArrayStack<>();
|
||||
|
||||
private final ArrayStack<String> prefixStack = new ArrayStack<>();
|
||||
|
||||
private final String fromForUpdate;
|
||||
|
||||
private boolean useColumnAlias;
|
||||
|
||||
private int columnIndex;
|
||||
|
||||
private int asOfTableCount;
|
||||
private StringBuilder sb = new StringBuilder(STRING_BUILDER_INITIAL_CAPACITY);
|
||||
|
||||
/**
|
||||
* A Set used to make sure formula joins are only added once to a query.
|
||||
*/
|
||||
private HashSet<String> formulaJoins;
|
||||
|
||||
private HashSet<String> tableJoins;
|
||||
|
||||
private final SqlTreeAlias alias;
|
||||
|
||||
private String currentPrefix;
|
||||
|
||||
private List<BeanProperty> encryptedProps;
|
||||
|
||||
private List<SqlTreeJoin> extraJoins;
|
||||
|
||||
private final CQueryDraftSupport draftSupport;
|
||||
|
||||
private final CQueryHistorySupport historySupport;
|
||||
|
||||
private final boolean historyQuery;
|
||||
|
||||
/**
|
||||
* Construct for SELECT clause (with column alias settings).
|
||||
*/
|
||||
DefaultDbSqlContext(SqlTreeAlias alias, String columnAliasPrefix, CQueryHistorySupport historySupport,
|
||||
CQueryDraftSupport draftSupport, String fromForUpdate) {
|
||||
this.alias = alias;
|
||||
@@ -116,7 +98,6 @@ final class DefaultDbSqlContext implements DbSqlContext {
|
||||
if (encryptedProps == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return encryptedProps.toArray(new BeanProperty[0]);
|
||||
}
|
||||
|
||||
@@ -178,6 +159,7 @@ final class DefaultDbSqlContext implements DbSqlContext {
|
||||
}
|
||||
if (addAsOfOnClause) {
|
||||
sb.append(" and ").append(historySupport.getAsOfPredicate(a2));
|
||||
asOfTableCount++;
|
||||
}
|
||||
if (extraWhere != null && !extraWhere.isEmpty()) {
|
||||
sb.append(" and ");
|
||||
@@ -195,6 +177,11 @@ final class DefaultDbSqlContext implements DbSqlContext {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int asOfTableCount() {
|
||||
return asOfTableCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDraftQuery() {
|
||||
return draftSupport != null;
|
||||
@@ -236,7 +223,7 @@ final class DefaultDbSqlContext implements DbSqlContext {
|
||||
|
||||
@Override
|
||||
public void appendFormulaJoin(String sqlFormulaJoin, SqlJoinType joinType, String manyWhere) {
|
||||
// replace ${ta} place holder with the real table alias...
|
||||
// replace ${ta} placeholder with the real table alias...
|
||||
String tableAlias = manyWhere == null ? tableAliasStack.peek() : getTableAliasManyWhere(manyWhere);
|
||||
String converted = sqlFormulaJoin.replace(tableAliasPlaceHolder, tableAlias);
|
||||
if (formulaJoins == null) {
|
||||
@@ -250,9 +237,9 @@ final class DefaultDbSqlContext implements DbSqlContext {
|
||||
formulaJoins.add(converted);
|
||||
sb.append(" ");
|
||||
if (joinType == SqlJoinType.OUTER) {
|
||||
if ("join".equals(sqlFormulaJoin.substring(0, 4).toLowerCase())) {
|
||||
if ("join".equalsIgnoreCase(sqlFormulaJoin.substring(0, 4))) {
|
||||
// prepend left as we are in the 'many' part
|
||||
append(" left ");
|
||||
sb.append("left ");
|
||||
}
|
||||
}
|
||||
sb.append(converted);
|
||||
|
||||
@@ -127,6 +127,7 @@ public final class SqlTreeBuilder {
|
||||
groupBy = buildGroupByClause();
|
||||
distinctOn = buildDistinctOn();
|
||||
encryptedProps = ctx.getEncryptedProps();
|
||||
query.incrementAsOfTableCount(ctx.asOfTableCount());
|
||||
}
|
||||
|
||||
boolean includeJoins = alias != null && alias.isIncludeJoins();
|
||||
|
||||
@@ -302,20 +302,7 @@ class SqlTreeNodeBean implements SqlTreeNode {
|
||||
|
||||
@Override
|
||||
public void addAsOfTableAlias(SpiQuery<?> query) {
|
||||
// if history on this bean type add it's alias
|
||||
// for each alias we add an effect date predicate
|
||||
if (desc.isHistorySupport()) {
|
||||
query.incrementAsOfTableCount();
|
||||
}
|
||||
if (lazyLoadParent != null && lazyLoadParent.isManyToManyWithHistory()) {
|
||||
query.incrementAsOfTableCount();
|
||||
}
|
||||
if (intersectionAsOfTableAlias) {
|
||||
query.incrementAsOfTableCount();
|
||||
}
|
||||
for (SqlTreeNode child : children) {
|
||||
child.addAsOfTableAlias(query);
|
||||
}
|
||||
// do nothing for non-root, handled by DbSqlContext for joins
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -58,13 +58,6 @@ final class SqlTreeNodeRoot extends SqlTreeNodeBean {
|
||||
public void addAsOfTableAlias(SpiQuery<?> query) {
|
||||
if (desc.isHistorySupport()) {
|
||||
query.setAsOfBaseTable();
|
||||
query.incrementAsOfTableCount();
|
||||
}
|
||||
if (lazyLoadParent != null && lazyLoadParent.isManyToManyWithHistory()) {
|
||||
query.incrementAsOfTableCount();
|
||||
}
|
||||
for (SqlTreeNode aChildren : children) {
|
||||
aChildren.addAsOfTableAlias(query);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -316,6 +316,11 @@ public final class DefaultOrmQuery<T> extends AbstractQuery implements SpiQuery<
|
||||
asOfTableCount++;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void incrementAsOfTableCount(int increment) {
|
||||
asOfTableCount += increment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAsOfTableCount() {
|
||||
return asOfTableCount;
|
||||
|
||||
@@ -1 +1 @@
|
||||
ebean-version: 129
|
||||
ebean-version: 133
|
||||
|
||||
@@ -3,7 +3,7 @@ package io.ebeaninternal.server.core;
|
||||
import io.ebean.config.DatabaseConfig;
|
||||
import io.ebean.datasource.DataSourceAlert;
|
||||
import io.ebean.datasource.DataSourceConfig;
|
||||
import io.ebean.datasource.pool.ConnectionPool;
|
||||
import io.ebean.datasource.DataSourcePool;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
@@ -137,7 +137,7 @@ public class InitDataSourceTest {
|
||||
config.getDataSourceConfig().setUrl("jdbc:h2:mem:dsTestOnline");
|
||||
config.getDataSourceConfig().setDriver("org.h2.Driver");
|
||||
InitDataSource.init(config);
|
||||
ConnectionPool pool = (ConnectionPool) config.getDataSource();
|
||||
DataSourcePool pool = (DataSourcePool) config.getDataSource();
|
||||
assertThat(pool.isDataSourceUp()).isTrue();
|
||||
pool.shutdown();
|
||||
}
|
||||
@@ -174,7 +174,7 @@ public class InitDataSourceTest {
|
||||
config.getDataSourceConfig().setAlert(alert);
|
||||
config.setDatabasePlatformName("h2");
|
||||
InitDataSource.init(config);
|
||||
ConnectionPool pool = (ConnectionPool) config.getDataSource();
|
||||
DataSourcePool pool = (DataSourcePool) config.getDataSource();
|
||||
assertThat(pool).isNotNull();
|
||||
// make some additional tests with the pool
|
||||
assertThat(pool.isDataSourceUp()).isFalse();
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean ddl generation</name>
|
||||
@@ -28,14 +28,14 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core-type</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-all</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean external mapping api</name>
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<scm>
|
||||
<developerConnection>scm:git:git@github.com:ebean-orm/ebean.git</developerConnection>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
|
||||
<name>ebean external mapping xml</name>
|
||||
@@ -28,7 +28,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-externalmapping-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -61,21 +61,21 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-h2</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-ddl-generator</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
<configuration>
|
||||
<tiles>
|
||||
<!-- other tiles ... -->
|
||||
<tile>io.ebean.tile:enhancement:13.1.0</tile>
|
||||
<tile>io.ebean.tile:enhancement:13.3.0</tile>
|
||||
</tiles>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
@@ -2,19 +2,18 @@
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0-SNAPSHOT</version>
|
||||
<version>13.3.1-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>ebean-kotlin</artifactId>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
<ebean-maven-plugin.version>12.14.1</ebean-maven-plugin.version>
|
||||
<kotlin.version>1.6.0</kotlin.version>
|
||||
</properties>
|
||||
|
||||
@@ -29,7 +28,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0-SNAPSHOT</version>
|
||||
<version>13.3.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -51,7 +50,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-test</artifactId>
|
||||
<version>13.2.0-SNAPSHOT</version>
|
||||
<version>13.3.1-SNAPSHOT</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -93,7 +92,7 @@
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<tiles>
|
||||
<tile>io.ebean.tile:enhancement:13.1.0</tile>
|
||||
<tile>io.ebean.tile:enhancement:13.3.0</tile>
|
||||
</tiles>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean postgis</name>
|
||||
@@ -22,14 +22,14 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-postgres</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<!-- provided scope -->
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-test</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<tiles>
|
||||
<tile>io.ebean.tile:enhancement:13.1.0</tile>
|
||||
<tile>io.ebean.tile:enhancement:13.3.0</tile>
|
||||
</tiles>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean querybean</name>
|
||||
@@ -17,7 +17,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -63,21 +63,21 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-ddl-generator</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>querybean-generator</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-test</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<tiles>
|
||||
<tile>io.ebean.tile:enhancement:13.1.0</tile>
|
||||
<tile>io.ebean.tile:enhancement:13.3.0</tile>
|
||||
</tiles>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
@@ -270,6 +270,12 @@ public class QCustomerTest {
|
||||
|
||||
assertThat(foo).hasSize(1);
|
||||
}
|
||||
|
||||
Customer customer = DB.find(Customer.class, cust.getId());
|
||||
assert customer != null;
|
||||
String customerToString = customer.toString();
|
||||
assertThat(customerToString).contains("Customer@0(id:");
|
||||
assertThat(customerToString).contains(", status:GOOD, inactive:false, name:usingConnection, version:1, whenCreated:");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
+8
-8
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-redis</artifactId>
|
||||
@@ -16,41 +16,41 @@
|
||||
<dependency>
|
||||
<groupId>redis.clients</groupId>
|
||||
<artifactId>jedis</artifactId>
|
||||
<version>4.2.0</version>
|
||||
<version>4.2.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>querybean-generator</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-test</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<tiles>
|
||||
<tile>io.ebean.tile:enhancement:13.1.0</tile>
|
||||
<tile>io.ebean.tile:enhancement:13.3.0</tile>
|
||||
</tiles>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
+7
-7
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean test</name>
|
||||
@@ -29,20 +29,20 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-h2</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-ddl-generator</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -62,7 +62,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-test-docker</artifactId>
|
||||
<version>4.5</version>
|
||||
<version>${ebean-test-docker.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -106,7 +106,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-all</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -266,7 +266,7 @@
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<tiles>
|
||||
<tile>io.ebean.tile:enhancement:13.1.0</tile>
|
||||
<tile>io.ebean.tile:enhancement:13.3.0</tile>
|
||||
</tiles>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
@@ -29,16 +29,17 @@ public class AutoConfigureForTesting implements AutoConfigure {
|
||||
|
||||
@Override
|
||||
public void preConfigure(DatabaseConfig config) {
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
String testPlatform = properties.getProperty("ebean.test.platform");
|
||||
log.debug("automatic testing config - with ebean.test.platform:{} environment db:{} name:{}", testPlatform, environmentDb, config.getName());
|
||||
|
||||
log.debug("automatic testing config - with ebean.test.platform:{} name:{} environmentDb:{}", testPlatform, config.getName(), environmentDb);
|
||||
if (RunOnceMarker.isRun()) {
|
||||
setupPlatform(environmentDb, config);
|
||||
}
|
||||
@@ -46,8 +47,10 @@ public class AutoConfigureForTesting implements AutoConfigure {
|
||||
|
||||
@Override
|
||||
public void postConfigure(DatabaseConfig config) {
|
||||
if (!config.isDefaultServer()) {
|
||||
return;
|
||||
}
|
||||
setupProviders(config);
|
||||
|
||||
if (org.h2.engine.Constants.VERSION_MAJOR == 1) {
|
||||
// This code may be removed later, when droppinv H2 1.xxx compatibility
|
||||
System.err.println("Running tests in H2 1.xxx compatibility mode");
|
||||
|
||||
@@ -68,6 +68,8 @@ public abstract class BaseTestCase {
|
||||
DB_CLOCK_DELTA = 100;
|
||||
}
|
||||
try {
|
||||
String propsFile = System.getProperty("props.file");
|
||||
System.out.println("BaseTestCase: -Dprops.file=" + propsFile); // help debug CI
|
||||
// First try, if we get the default server. If this fails, all tests will fail.
|
||||
DB.getDefault();
|
||||
} catch (Throwable e) {
|
||||
|
||||
+1
-1
@@ -192,6 +192,6 @@ public class TestElementCollectionBasicMap extends BaseTestCase {
|
||||
final EcmPerson fromJson = DB.json().toBean(EcmPerson.class, asJson);
|
||||
assertThat(fromJson.getName()).isEqualTo("Fiona021");
|
||||
assertThat(fromJson.getPhoneNumbers()).hasSize(2);
|
||||
assertThat(fromJson.getPhoneNumbers().toString()).isEqualTo("BeanMap size[2] map{home=021 1234, work=021 4321}");
|
||||
assertThat(fromJson.getPhoneNumbers().toString()).isEqualTo("{home=021 1234, work=021 4321}");
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -183,6 +183,6 @@ class TestElementCollectionBasicSet extends BaseTestCase {
|
||||
final EcsPerson fromJson = DB.json().toBean(EcsPerson.class, asJson);
|
||||
assertThat(fromJson.getName()).isEqualTo("Fiona021");
|
||||
assertThat(fromJson.getPhoneNumbers()).hasSize(2);
|
||||
assertThat(fromJson.getPhoneNumbers().toString()).isEqualTo("BeanSet size[2] set[021 1234, 021 4321]");
|
||||
assertThat(fromJson.getPhoneNumbers().toString()).isEqualTo("[021 1234, 021 4321]");
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -190,6 +190,6 @@ public class TestElementCollectionEmbeddedList extends BaseTestCase {
|
||||
final EcblPerson fromJson = DB.json().toBean(EcblPerson.class, asJson);
|
||||
assertThat(fromJson.getName()).isEqualTo("Fiona64021");
|
||||
assertThat(fromJson.getPhoneNumbers()).hasSize(2);
|
||||
assertThat(fromJson.getPhoneNumbers().toString()).isEqualTo("BeanList size[2] list[64-021-1234, 64-021-4321]");
|
||||
assertThat(fromJson.getPhoneNumbers().toString()).isEqualTo("[64-021-1234, 64-021-4321]");
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -181,6 +181,6 @@ public class TestElementCollectionEmbeddedMap extends BaseTestCase {
|
||||
final EcbmPerson fromJson = DB.json().toBean(EcbmPerson.class, asJson);
|
||||
assertThat(fromJson.getName()).isEqualTo("Fiona64021");
|
||||
assertThat(fromJson.getPhoneNumbers()).hasSize(2);
|
||||
assertThat(fromJson.getPhoneNumbers().toString()).isEqualTo("BeanMap size[2] map{home=64-021-1234, work=64-021-4321}");
|
||||
assertThat(fromJson.getPhoneNumbers().toString()).isEqualTo("{home=64-021-1234, work=64-021-4321}");
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -45,6 +45,6 @@ public class TestElementCollectionEnumSet extends BaseTestCase {
|
||||
final EcEnumPerson fromJson = DB.json().toBean(EcEnumPerson.class, asJson);
|
||||
assertThat(fromJson.getName()).isEqualTo("Enum Person");
|
||||
assertThat(fromJson.getTags()).hasSize(2);
|
||||
assertThat(fromJson.getTags().toString()).isEqualTo("BeanSet size[2] set[BLUE, RED]");
|
||||
assertThat(fromJson.getTags().toString()).isEqualTo("[BLUE, RED]");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
package org.tests.model.history;
|
||||
|
||||
import io.ebean.annotation.History;
|
||||
import javax.persistence.CascadeType;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.OneToOne;
|
||||
import org.tests.model.draftable.BaseDomain;
|
||||
|
||||
@History
|
||||
@Entity
|
||||
public class HistoryOneToOne extends BaseDomain {
|
||||
|
||||
final String name;
|
||||
|
||||
@OneToOne(cascade = CascadeType.REFRESH)
|
||||
HistorylessOneToOne historylessOneToOne;
|
||||
|
||||
public HistoryOneToOne(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public HistorylessOneToOne less() {
|
||||
return historylessOneToOne;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package org.tests.model.history;
|
||||
|
||||
import org.tests.model.draftable.BaseDomain;
|
||||
|
||||
import javax.persistence.CascadeType;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.OneToOne;
|
||||
|
||||
@Entity
|
||||
public class HistorylessOneToOne extends BaseDomain {
|
||||
|
||||
private final String name;
|
||||
|
||||
/**
|
||||
* This @OneToOne(mappedBy=...) side should really be FetchType.LAZY
|
||||
*/
|
||||
@OneToOne(mappedBy = "historylessOneToOne", cascade = CascadeType.ALL, orphanRemoval = true)//, fetch = FetchType.LAZY)
|
||||
HistoryOneToOne historyOneToOne;
|
||||
|
||||
public HistorylessOneToOne(final String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public HistoryOneToOne getHistoryOneToOne() {
|
||||
return historyOneToOne;
|
||||
}
|
||||
|
||||
public void setHistoryOneToOne(final HistoryOneToOne historyOneToOne) {
|
||||
this.historyOneToOne = historyOneToOne;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
package org.tests.model.history;
|
||||
|
||||
import io.ebean.DB;
|
||||
import io.ebean.annotation.Platform;
|
||||
import io.ebean.xtest.BaseTestCase;
|
||||
import io.ebean.xtest.IgnorePlatform;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class TestHistoryOneToOne extends BaseTestCase {
|
||||
|
||||
private Long expectedLessId;
|
||||
private Long expectedHistoryId;
|
||||
|
||||
@IgnorePlatform({Platform.ORACLE, Platform.COCKROACH})
|
||||
@Test
|
||||
void test() throws InterruptedException {
|
||||
HistorylessOneToOne historylessOneToOne = new HistorylessOneToOne("less");
|
||||
historylessOneToOne.setHistoryOneToOne(new HistoryOneToOne("one"));
|
||||
DB.save(historylessOneToOne);
|
||||
Thread.sleep(20);
|
||||
|
||||
expectedLessId = historylessOneToOne.getId();
|
||||
expectedHistoryId = historylessOneToOne.getHistoryOneToOne().getId();
|
||||
|
||||
findViaHistory();
|
||||
findViaLess();
|
||||
|
||||
findViaLess_fetch();
|
||||
findViaHistory_fetch();
|
||||
}
|
||||
|
||||
private void findViaLess() {
|
||||
HistorylessOneToOne lessFetched = DB.find(HistorylessOneToOne.class)
|
||||
.asOf(new Timestamp(System.currentTimeMillis()))
|
||||
.findOne();
|
||||
|
||||
expected_findViaLess(lessFetched);
|
||||
}
|
||||
|
||||
|
||||
private void findViaLess_fetch() {
|
||||
HistorylessOneToOne lessFetched = DB.find(HistorylessOneToOne.class)
|
||||
.asOf(new Timestamp(System.currentTimeMillis()))
|
||||
.fetch("historyOneToOne")
|
||||
.findOne();
|
||||
|
||||
expected_findViaLess(lessFetched);
|
||||
}
|
||||
|
||||
private void expected_findViaLess(HistorylessOneToOne lessFetched) {
|
||||
assert lessFetched != null;
|
||||
assertThat(lessFetched.getId()).isEqualTo(expectedLessId);
|
||||
HistoryOneToOne history1 = lessFetched.getHistoryOneToOne();
|
||||
assertThat(history1.getId()).isEqualTo(expectedHistoryId);
|
||||
assertThat(history1.less().getId()).isEqualTo(expectedLessId);
|
||||
assertThat(history1.less().getName()).isEqualTo("less");
|
||||
assertThat(history1.getName()).isEqualTo("one");
|
||||
}
|
||||
|
||||
|
||||
private void findViaHistory_fetch() {
|
||||
|
||||
HistoryOneToOne oneFetched = DB.find(HistoryOneToOne.class)
|
||||
.asOf(new Timestamp(System.currentTimeMillis()))
|
||||
.fetch("historylessOneToOne")
|
||||
.findOne();
|
||||
|
||||
expected_viaHistory(oneFetched);
|
||||
}
|
||||
|
||||
private void findViaHistory() {
|
||||
HistoryOneToOne oneFetched = DB.find(HistoryOneToOne.class)
|
||||
.asOf(new Timestamp(System.currentTimeMillis()))
|
||||
.findOne();
|
||||
|
||||
expected_viaHistory(oneFetched);
|
||||
}
|
||||
|
||||
private void expected_viaHistory(HistoryOneToOne oneFetched) {
|
||||
assert oneFetched != null;
|
||||
assertThat(oneFetched.getId()).isEqualTo(expectedHistoryId);
|
||||
assertThat(oneFetched.less().getId()).isEqualTo(expectedLessId);
|
||||
assertThat(oneFetched.less().getName()).isEqualTo("less");
|
||||
assertThat(oneFetched.getName()).isEqualTo("one");
|
||||
}
|
||||
}
|
||||
@@ -68,7 +68,7 @@ public class TestQueryJoinOnFormula extends BaseTestCase {
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertEquals(1, sql.size());
|
||||
assertSql(sql.get(0)).contains("join (select order_id, count(*) as total_items,");
|
||||
assertSql(sql.get(0)).contains("select count(*) from ( select t0.id from o_order t0 left join (select order_id,");
|
||||
assertSql(sql.get(0)).contains("select count(*) from ( select t0.id from o_order t0 left join (select order_id,");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -83,7 +83,7 @@ public class TestQueryJoinOnFormula extends BaseTestCase {
|
||||
shipQuery.findList();
|
||||
assertSql(shipQuery.getGeneratedSql()).isEqualTo("select t0.id "
|
||||
+ "from or_order_ship t0 "
|
||||
+ "left join o_order t1 on t1.id = t0.order_id "
|
||||
+ "left join o_order t1 on t1.id = t0.order_id "
|
||||
+ "left join (select order_id, count(*) as total_items, sum(order_qty*unit_price) as total_amount from o_order_detail group by order_id) z_bt1 on z_bt1.order_id = t1.id "
|
||||
+ "order by z_bt1.total_amount");
|
||||
}
|
||||
@@ -100,7 +100,7 @@ public class TestQueryJoinOnFormula extends BaseTestCase {
|
||||
shipQuery.findList();
|
||||
assertSql(shipQuery.getGeneratedSql()).isEqualTo("select t0.id "
|
||||
+ "from or_order_ship t0 "
|
||||
+ "left join o_order t1 on t1.id = t0.order_id "
|
||||
+ "left join o_order t1 on t1.id = t0.order_id "
|
||||
+ "left join (select order_id, count(*) as total_items, sum(order_qty*unit_price) as total_amount from o_order_detail group by order_id) z_bt1 on z_bt1.order_id = t1.id "
|
||||
+ "where z_bt1.total_amount is not null");
|
||||
}
|
||||
@@ -124,7 +124,7 @@ public class TestQueryJoinOnFormula extends BaseTestCase {
|
||||
"from or_order_ship t0 " +
|
||||
"join o_order u1 on u1.id = t0.order_id " +
|
||||
"join or_order_ship u2 on u2.order_id = u1.id " +
|
||||
"join o_order u3 on u3.id = u2.order_id " +
|
||||
"join o_order u3 on u3.id = u2.order_id " +
|
||||
"left join (select order_id, count(*) as total_items, sum(order_qty*unit_price) as total_amount from o_order_detail group by order_id) z_bu3 on z_bu3.order_id = u3.id " +
|
||||
"where z_bu3.total_amount is not null");
|
||||
}
|
||||
@@ -141,7 +141,7 @@ public class TestQueryJoinOnFormula extends BaseTestCase {
|
||||
shipQuery.findList();
|
||||
assertSql(shipQuery.getGeneratedSql()).isEqualTo("select t0.id, t1.id, z_bt1.total_amount "
|
||||
+ "from or_order_ship t0 "
|
||||
+ "left join o_order t1 on t1.id = t0.order_id "
|
||||
+ "left join o_order t1 on t1.id = t0.order_id "
|
||||
+ "left join (select order_id, count(*) as total_items, sum(order_qty*unit_price) as total_amount from o_order_detail group by order_id) z_bt1 on z_bt1.order_id = t1.id "
|
||||
+ "order by z_bt1.total_amount");
|
||||
|
||||
@@ -158,7 +158,7 @@ public class TestQueryJoinOnFormula extends BaseTestCase {
|
||||
shipQuery.findList();
|
||||
assertSql(shipQuery.getGeneratedSql()).isEqualTo("select t0.id, t1.id, z_bt1.total_amount "
|
||||
+ "from or_order_ship t0 "
|
||||
+ "left join o_order t1 on t1.id = t0.order_id "
|
||||
+ "left join o_order t1 on t1.id = t0.order_id "
|
||||
+ "left join (select order_id, count(*) as total_items, sum(order_qty*unit_price) as total_amount from o_order_detail group by order_id) z_bt1 on z_bt1.order_id = t1.id "
|
||||
+ "where z_bt1.total_amount is not null");
|
||||
|
||||
@@ -179,7 +179,7 @@ public class TestQueryJoinOnFormula extends BaseTestCase {
|
||||
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertEquals(1, sql.size());
|
||||
assertSql(sql.get(0)).contains("select count(*) from ( select t0.id from o_order t0 left join (select order_id,");
|
||||
assertSql(sql.get(0)).contains("select count(*) from ( select t0.id from o_order t0 left join (select order_id,");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -6,6 +6,7 @@ import io.ebean.OrderBy;
|
||||
import io.ebean.Query;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.tests.model.basic.Order;
|
||||
import org.tests.model.basic.OrderDetail;
|
||||
import org.tests.model.basic.ResetBasicData;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
@@ -37,5 +38,18 @@ public class TestOrderByClear extends BaseTestCase {
|
||||
assertTrue(sql.contains("order by t0.ship_date"));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWithCache() {
|
||||
ResetBasicData.reset();
|
||||
|
||||
Query<OrderDetail> query = DB.find(OrderDetail.class).where().idIn(1,2,3).query();
|
||||
query.setUseCache(true);
|
||||
query.findList();
|
||||
query.order().asc("cretime").findList(); // hit cache
|
||||
query.order().clear();
|
||||
query.findList(); // hit cache again
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import java.io.PrintStream;
|
||||
import java.net.URL;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class TestFileType extends BaseTestCase {
|
||||
|
||||
@@ -184,6 +185,31 @@ public class TestFileType extends BaseTestCase {
|
||||
DB.delete(bean3);
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_FileDirty() throws Exception {
|
||||
SomeFileBean bean0 = new SomeFileBean();
|
||||
bean0.setName("afile");
|
||||
bean0.setContent(file);
|
||||
|
||||
DB.save(bean0);
|
||||
|
||||
SomeFileBean bean1 = DB.find(SomeFileBean.class)
|
||||
.select("name, file")
|
||||
.setId(bean0.getId())
|
||||
.findOne();
|
||||
|
||||
assertThat(bean1.getContent())
|
||||
.isNotEqualTo(file) // not same file object, but same content
|
||||
.hasSameBinaryContentAs(file);
|
||||
|
||||
assertFalse(DB.beanState(bean1).isDirty());
|
||||
bean1.setContent(file);
|
||||
assertFalse(DB.beanState(bean1).isDirty());
|
||||
bean1.setContent(file2);
|
||||
assertTrue(DB.beanState(bean1).isDirty());
|
||||
|
||||
}
|
||||
|
||||
private File getFile(String resource) {
|
||||
URL url = getClass().getResource(resource);
|
||||
return new File(url.getFile());
|
||||
|
||||
@@ -72,11 +72,12 @@
|
||||
<appender-ref ref="STDOUT"/>
|
||||
</root>
|
||||
|
||||
|
||||
<logger name="org.tests" level="INFO"/>
|
||||
<logger name="io.ebean" level="INFO"/>
|
||||
|
||||
<logger name="io.avaje.config" level="TRACE"/>
|
||||
<logger name="io.ebean.docker" level="TRACE"/>
|
||||
<logger name="io.ebean.test" level="TRACE"/>
|
||||
|
||||
<!-- <logger name="io.ebean.DDL" level="DEBUG"/>-->
|
||||
|
||||
<!-- <logger name="io.ebean.SQL" level="TRACE"/>-->
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<name>kotlin querybean generator</name>
|
||||
@@ -29,7 +29,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-ddl-generator</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
+15
-15
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>platforms</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-platform-all</artifactId>
|
||||
@@ -14,72 +14,72 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-h2</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-clickhouse</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-db2</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-hana</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-hsqldb</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-mysql</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-mariadb</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-nuodb</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-oracle</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-postgres</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-sqlanywhere</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-sqlite</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-sqlserver</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>platforms</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-platform-clickhouse</artifactId>
|
||||
@@ -14,12 +14,12 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>platforms</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-platform-db2</artifactId>
|
||||
@@ -14,12 +14,12 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>platforms</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-platform-h2</artifactId>
|
||||
@@ -14,7 +14,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Provided scope so that the H2HistoryTrigger can live in Ebean core
|
||||
@@ -36,6 +36,6 @@
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>platforms</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-platform-hana</artifactId>
|
||||
@@ -14,12 +14,12 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>platforms</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-platform-hsqldb</artifactId>
|
||||
@@ -14,12 +14,12 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-h2</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>platforms</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-platform-mariadb</artifactId>
|
||||
@@ -14,18 +14,18 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-mysql</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>platforms</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-platform-mysql</artifactId>
|
||||
@@ -14,7 +14,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -27,6 +27,6 @@
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>platforms</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-platform-nuodb</artifactId>
|
||||
@@ -14,12 +14,12 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>platforms</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-platform-oracle</artifactId>
|
||||
@@ -14,7 +14,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -27,6 +27,6 @@
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>platforms</artifactId>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>platforms</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-platform-postgres</artifactId>
|
||||
@@ -14,7 +14,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -27,6 +27,6 @@
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>platforms</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-platform-sqlanywhere</artifactId>
|
||||
@@ -14,12 +14,12 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>platforms</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-platform-sqlite</artifactId>
|
||||
@@ -14,12 +14,12 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>platforms</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-platform-sqlserver</artifactId>
|
||||
@@ -14,7 +14,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -27,6 +27,6 @@
|
||||
</dependencies>
|
||||
|
||||
<scm>
|
||||
<tag>ebean-parent-13.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
</project>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</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.2.0</tag>
|
||||
<tag>ebean-parent-13.3.1</tag>
|
||||
</scm>
|
||||
|
||||
<licenses>
|
||||
@@ -40,14 +40,14 @@
|
||||
<properties>
|
||||
<nexus.staging.autoReleaseAfterClose>false</nexus.staging.autoReleaseAfterClose>
|
||||
<jackson.version>2.13.2</jackson.version>
|
||||
<h2database.version>2.1.210</h2database.version>
|
||||
<h2database.version>2.1.212</h2database.version>
|
||||
<ebean-ddl-runner.version>1.3</ebean-ddl-runner.version>
|
||||
<ebean-migration-auto.version>1.2</ebean-migration-auto.version>
|
||||
<ebean-migration.version>13.0.0</ebean-migration.version>
|
||||
<ebean-test-docker.version>4.5</ebean-test-docker.version>
|
||||
<ebean-test-docker.version>4.6</ebean-test-docker.version>
|
||||
<ebean-datasource.version>7.5</ebean-datasource.version>
|
||||
<ebean-agent.version>13.2.0</ebean-agent.version>
|
||||
<ebean-maven-plugin.version>13.2.0</ebean-maven-plugin.version>
|
||||
<ebean-agent.version>13.3.1</ebean-agent.version>
|
||||
<ebean-maven-plugin.version>13.3.1</ebean-maven-plugin.version>
|
||||
<surefire.useModulePath>false</surefire.useModulePath>
|
||||
</properties>
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.2.0</version>
|
||||
<version>13.3.1</version>
|
||||
</parent>
|
||||
|
||||
<name>querybean generator</name>
|
||||
|
||||
+19
-11
@@ -1,11 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<!-- <parent>-->
|
||||
<!-- <groupId>org.avaje</groupId>-->
|
||||
<!-- <artifactId>java11-oss</artifactId>-->
|
||||
<!-- <version>2.3</version>-->
|
||||
<!-- </parent>-->
|
||||
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>test-java16</artifactId>
|
||||
@@ -13,26 +9,25 @@
|
||||
|
||||
<properties>
|
||||
<maven-compiler-plugin.version>3.10.1</maven-compiler-plugin.version>
|
||||
<maven.deploy.skip>true</maven.deploy.skip>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean</artifactId>
|
||||
<version>13.2.0-SNAPSHOT</version>
|
||||
<version>13.3.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>ch.qos.logback</groupId>
|
||||
<artifactId>logback-classic</artifactId>
|
||||
<version>1.2.10</version>
|
||||
<version>1.2.11</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-test</artifactId>
|
||||
<version>13.2.0-SNAPSHOT</version>
|
||||
<version>13.3.1-SNAPSHOT</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -58,11 +53,24 @@
|
||||
<path>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>querybean-generator</artifactId>
|
||||
<version>13.2.0-SNAPSHOT</version>
|
||||
<version>13.3.1-SNAPSHOT</version>
|
||||
</path>
|
||||
</annotationProcessorPaths>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>io.repaint.maven</groupId>
|
||||
<artifactId>tiles-maven-plugin</artifactId>
|
||||
<version>2.24</version>
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<tiles>
|
||||
<tile>io.ebean.tile:enhancement:13.3.0</tile>
|
||||
</tiles>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>org.avaje</groupId>
|
||||
<artifactId>java11-oss</artifactId>
|
||||
<version>3.4</version>
|
||||
<version>3.7</version>
|
||||
<relativePath/>
|
||||
</parent>
|
||||
|
||||
@@ -19,10 +19,9 @@
|
||||
<maven.compiler.source>11</maven.compiler.source>
|
||||
<maven.compiler.target>11</maven.compiler.target>
|
||||
|
||||
<ebean-maven-plugin.version>12.14.1</ebean-maven-plugin.version>
|
||||
<ebean-maven-plugin.version>13.3.0</ebean-maven-plugin.version>
|
||||
<kotlin.version>1.6.0</kotlin.version>
|
||||
<jackson.version>2.12.1</jackson.version>
|
||||
<maven.deploy.skip>true</maven.deploy.skip>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
@@ -36,14 +35,14 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-test</artifactId>
|
||||
<version>13.2.0-SNAPSHOT</version>
|
||||
<version>13.3.1-SNAPSHOT</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.2.0-SNAPSHOT</version>
|
||||
<version>13.3.1-SNAPSHOT</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user