mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f34e7b6003 | ||
|
|
089dd8e364 | ||
|
|
44770382fb | ||
|
|
2a62d413cc | ||
|
|
0046d983cb | ||
|
|
2e1b52d7d4 | ||
|
|
09d5163396 | ||
|
|
a6a38b9a92 | ||
|
|
bd4521b240 | ||
|
|
8a7379879b | ||
|
|
b78dd6f79a | ||
|
|
4ebb5fd112 | ||
|
|
487368976f | ||
|
|
c6defceec9 | ||
|
|
8ed3b765ec | ||
|
|
fcbcc53e27 | ||
|
|
b377e1a618 | ||
|
|
a0f612ed71 | ||
|
|
47e97a77a8 | ||
|
|
e8d3f50bb4 | ||
|
|
716cfaf938 | ||
|
|
7cd9e5ee03 | ||
|
|
f9c9bea623 | ||
|
|
720832122c | ||
|
|
7b635acf56 | ||
|
|
6b7efe65d7 | ||
|
|
03cd4000f0 | ||
|
|
dfd6434b59 | ||
|
|
4e7480237b | ||
|
|
9bfcf07486 | ||
|
|
b1f1344057 | ||
|
|
07201c1519 | ||
|
|
455a9fdffc | ||
|
|
3f67425727 | ||
|
|
3fd9ae06db | ||
|
|
a8ce726e47 | ||
|
|
29cd1a143d | ||
|
|
6a19c6a0ce | ||
|
|
eaec515cc1 | ||
|
|
97709d3493 | ||
|
|
87ad874621 |
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-clickhouse</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-postgres</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-db2</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-h2</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-hana</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-mariadb</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-mysql</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-nuodb</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-oracle</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -22,13 +22,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -47,19 +47,19 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-postgres</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-postgis-types</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-postgres</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-sqlite</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-sqlserver</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-postgres</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -41,7 +41,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-jackson-mapper</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -60,13 +60,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-all</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>composites</artifactId>
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean api</name>
|
||||
@@ -39,7 +39,7 @@
|
||||
<dependency>
|
||||
<groupId>io.avaje</groupId>
|
||||
<artifactId>avaje-config</artifactId>
|
||||
<version>3.9</version>
|
||||
<version>3.10</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
||||
@@ -3,6 +3,8 @@ package io.ebean;
|
||||
import io.avaje.lang.NonNullApi;
|
||||
import io.avaje.lang.Nullable;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.sql.Connection;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
@@ -206,14 +208,19 @@ public interface DtoQuery<T> extends CancelableQuery {
|
||||
*/
|
||||
DtoQuery<T> usingTransaction(Transaction transaction);
|
||||
|
||||
/**
|
||||
* Execute the query using the given connection.
|
||||
*/
|
||||
DtoQuery<T> usingConnection(Connection connection);
|
||||
|
||||
/**
|
||||
* Ensure that the master DataSource is used if there is a read only data source
|
||||
* being used (that is using a read replica database potentially with replication lag).
|
||||
* <p>
|
||||
* When the database is configured with a read-only DataSource via
|
||||
* say {@link io.ebean.config.DatabaseConfig#setReadOnlyDataSource(DataSource)} then
|
||||
* say {@link io.ebean.DatabaseBuilder#readOnlyDataSource(DataSource)} then
|
||||
* by default when a query is run without an active transaction, it uses the read-only data
|
||||
* source. We we use {@code usingMaster()} to instead ensure that the query is executed
|
||||
* source. We use {@code usingMaster()} to instead ensure that the query is executed
|
||||
* against the master data source.
|
||||
*/
|
||||
DtoQuery<T> usingMaster();
|
||||
|
||||
@@ -702,9 +702,9 @@ public interface Query<T> extends CancelableQuery {
|
||||
* being used (that is using a read replica database potentially with replication lag).
|
||||
* <p>
|
||||
* When the database is configured with a read-only DataSource via
|
||||
* say {@link io.ebean.config.DatabaseConfig#setReadOnlyDataSource(DataSource)} then
|
||||
* say {@link io.ebean.DatabaseBuilder#readOnlyDataSource(DataSource)} then
|
||||
* by default when a query is run without an active transaction, it uses the read-only data
|
||||
* source. We we use {@code usingMaster()} to instead ensure that the query is executed
|
||||
* source. We use {@code usingMaster()} to instead ensure that the query is executed
|
||||
* against the master data source.
|
||||
*/
|
||||
Query<T> usingMaster();
|
||||
@@ -970,6 +970,25 @@ public interface Query<T> extends CancelableQuery {
|
||||
@Nullable
|
||||
<A> A findSingleAttribute();
|
||||
|
||||
/**
|
||||
* Execute the query returning a single optional attribute value.
|
||||
* <p>
|
||||
* <h3>Example</h3>
|
||||
* <pre>{@code
|
||||
*
|
||||
* Optional<String> maybeName =
|
||||
* new QCustomer()
|
||||
* .select(name)
|
||||
* .id.eq(42)
|
||||
* .status.eq(NEW)
|
||||
* .findSingleAttributeOrEmpty();
|
||||
*
|
||||
* }</pre>
|
||||
*
|
||||
* @return an optional value for the selected property
|
||||
*/
|
||||
<A> Optional<A> findSingleAttributeOrEmpty();
|
||||
|
||||
/**
|
||||
* Return true if this is countDistinct query.
|
||||
*/
|
||||
|
||||
@@ -3,7 +3,9 @@ package io.ebean;
|
||||
import io.avaje.lang.NonNullApi;
|
||||
import io.avaje.lang.Nullable;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.io.Serializable;
|
||||
import java.sql.Connection;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Consumer;
|
||||
@@ -45,14 +47,19 @@ public interface SqlQuery extends Serializable, CancelableQuery {
|
||||
*/
|
||||
SqlQuery usingTransaction(Transaction transaction);
|
||||
|
||||
/**
|
||||
* Execute the query using the given connection.
|
||||
*/
|
||||
SqlQuery usingConnection(Connection connection);
|
||||
|
||||
/**
|
||||
* Ensure that the master DataSource is used if there is a read only data source
|
||||
* being used (that is using a read replica database potentially with replication lag).
|
||||
* <p>
|
||||
* When the database is configured with a read-only DataSource via
|
||||
* say {@link io.ebean.config.DatabaseConfig#setReadOnlyDataSource(DataSource)} then
|
||||
* say {@link io.ebean.DatabaseBuilder#readOnlyDataSource(DataSource)}then
|
||||
* by default when a query is run without an active transaction, it uses the read-only data
|
||||
* source. We we use {@code usingMaster()} to instead ensure that the query is executed
|
||||
* source. We use {@code usingMaster()} to instead ensure that the query is executed
|
||||
* against the master data source.
|
||||
*/
|
||||
SqlQuery usingMaster();
|
||||
|
||||
@@ -1336,7 +1336,7 @@ public class DatabaseConfig implements DatabaseBuilder.Settings {
|
||||
|
||||
@Override
|
||||
public boolean skipDataSourceCheck() {
|
||||
return skipDataSourceCheck;
|
||||
return skipDataSourceCheck || readOnlyDatabase;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -2128,6 +2128,7 @@ public class DatabaseConfig implements DatabaseBuilder.Settings {
|
||||
loadDocStoreSettings(p);
|
||||
|
||||
defaultServer = p.getBoolean("defaultServer", defaultServer);
|
||||
readOnlyDatabase = p.getBoolean("readOnlyDatabase", readOnlyDatabase);
|
||||
autoPersistUpdates = p.getBoolean("autoPersistUpdates", autoPersistUpdates);
|
||||
loadModuleInfo = p.getBoolean("loadModuleInfo", loadModuleInfo);
|
||||
maxCallStack = p.getInt("maxCallStack", maxCallStack);
|
||||
|
||||
@@ -74,6 +74,7 @@ class DatabaseConfigTest {
|
||||
props.setProperty("forUpdateNoKey", "true");
|
||||
props.setProperty("defaultServer", "false");
|
||||
props.setProperty("skipDataSourceCheck", "true");
|
||||
props.setProperty("readOnlyDatabase", "true");
|
||||
|
||||
props.setProperty("queryPlan.enable", "true");
|
||||
props.setProperty("queryPlan.thresholdMicros", "10000");
|
||||
@@ -93,6 +94,7 @@ class DatabaseConfigTest {
|
||||
assertTrue(settings.isAutoLoadModuleInfo());
|
||||
assertTrue(settings.isLoadModuleInfo());
|
||||
assertTrue(settings.skipDataSourceCheck());
|
||||
assertTrue(settings.readOnlyDatabase());
|
||||
|
||||
assertTrue(settings.isIdGeneratorAutomatic());
|
||||
assertFalse(settings.getPlatformConfig().isCaseSensitiveCollation());
|
||||
|
||||
+26
-26
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean bom</name>
|
||||
@@ -89,25 +89,25 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core-type</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -125,13 +125,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-jackson-mapper</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-ddl-generator</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -155,37 +155,37 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>querybean-generator</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>kotlin-querybean-generator</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-test</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-redis</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-spring-txn</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<!-- platforms -->
|
||||
@@ -193,79 +193,79 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-clickhouse</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-db2</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-h2</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-hana</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-mariadb</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-mysql</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-nuodb</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-oracle</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-postgres</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-postgis</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-postgis-types</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-sqlite</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-sqlserver</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-core-type</artifactId>
|
||||
@@ -16,7 +16,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
||||
+6
-6
@@ -3,7 +3,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-core</artifactId>
|
||||
@@ -22,7 +22,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -46,7 +46,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core-type</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -159,21 +159,21 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-h2</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-postgres</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-sqlserver</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package io.ebeaninternal.server.core;
|
||||
|
||||
import io.ebean.Database;
|
||||
import io.ebean.DatabaseBuilder;
|
||||
import io.ebean.config.*;
|
||||
import io.ebean.config.dbplatform.DatabasePlatform;
|
||||
@@ -64,10 +65,8 @@ public final class DefaultContainer implements SpiContainer {
|
||||
*/
|
||||
@Override
|
||||
public SpiEbeanServer createServer(String name) {
|
||||
DatabaseBuilder config = new DatabaseConfig();
|
||||
config.setName(name);
|
||||
config.loadFromProperties();
|
||||
return createServer(config);
|
||||
var builder = Database.builder().name(name).loadFromProperties();
|
||||
return createServer(builder);
|
||||
}
|
||||
|
||||
private SpiBackgroundExecutor createBackgroundExecutor(DatabaseBuilder builder) {
|
||||
@@ -94,7 +93,7 @@ public final class DefaultContainer implements SpiContainer {
|
||||
|
||||
boolean online = true;
|
||||
if (config.isDocStoreOnly()) {
|
||||
config.setDatabasePlatform(new DatabasePlatform());
|
||||
config.databasePlatform(new DatabasePlatform());
|
||||
} else {
|
||||
TenantMode tenantMode = config.getTenantMode();
|
||||
if (TenantMode.DB != tenantMode) {
|
||||
@@ -203,7 +202,7 @@ public final class DefaultContainer implements SpiContainer {
|
||||
*/
|
||||
private void setNamingConvention(DatabaseBuilder.Settings config) {
|
||||
if (config.getNamingConvention() == null) {
|
||||
config.setNamingConvention(new UnderscoreNamingConvention());
|
||||
config.namingConvention(new UnderscoreNamingConvention());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -218,7 +217,7 @@ public final class DefaultContainer implements SpiContainer {
|
||||
}
|
||||
// automatically determine the platform
|
||||
platform = new DatabasePlatformFactory().create(config);
|
||||
config.setDatabasePlatform(platform);
|
||||
config.databasePlatform(platform);
|
||||
}
|
||||
platform.configure(config.getPlatformConfig());
|
||||
}
|
||||
@@ -242,11 +241,9 @@ public final class DefaultContainer implements SpiContainer {
|
||||
* Check the autoCommit and Transaction Isolation levels of the DataSource.
|
||||
* <p>
|
||||
* If autoCommit is true this could be a real problem.
|
||||
* </p>
|
||||
* <p>
|
||||
* If the Isolation level is not READ_COMMITTED then optimistic concurrency
|
||||
* checking may not work as expected.
|
||||
* </p>
|
||||
*/
|
||||
private boolean checkDataSource(DatabaseBuilder.Settings config) {
|
||||
if (isOfflineMode(config)) {
|
||||
|
||||
+1
-1
@@ -81,7 +81,7 @@ final class BetweenPropertyExpression extends NonPrepareExpression {
|
||||
|
||||
@Override
|
||||
public void addSql(SpiExpressionRequest request) {
|
||||
request.append(" ?").append(BETWEEN).property(name(lowProperty)).append(" and ").property(name(highProperty));
|
||||
request.append("?").append(BETWEEN).property(name(lowProperty)).append(" and ").property(name(highProperty));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -305,6 +305,11 @@ final class DefaultFetchGroupQuery<T> implements SpiFetchGroupQuery<T>, SpiQuery
|
||||
throw new RuntimeException("EB102: Only select() and fetch() clause is allowed on FetchGroup");
|
||||
}
|
||||
|
||||
@Override
|
||||
public <A> Optional<A> findSingleAttributeOrEmpty() {
|
||||
throw new RuntimeException("EB102: Only select() and fetch() clause is allowed on FetchGroup");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCountDistinct() {
|
||||
throw new RuntimeException("EB102: Only select() and fetch() clause is allowed on FetchGroup");
|
||||
|
||||
@@ -9,8 +9,10 @@ import io.ebeaninternal.api.*;
|
||||
import io.ebeaninternal.server.dto.DtoBeanDescriptor;
|
||||
import io.ebeaninternal.server.dto.DtoMappingRequest;
|
||||
import io.ebeaninternal.server.dto.DtoQueryPlan;
|
||||
import io.ebeaninternal.server.transaction.ExternalJdbcTransaction;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.sql.Connection;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
@@ -86,6 +88,12 @@ public final class DefaultDtoQuery<T> extends AbstractQuery implements SpiDtoQue
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DtoQuery<T> usingConnection(Connection connection) {
|
||||
this.transaction = new ExternalJdbcTransaction(connection);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DtoQuery<T> usingMaster() {
|
||||
this.useMaster = true;
|
||||
|
||||
@@ -1161,7 +1161,7 @@ public class DefaultOrmQuery<T> extends AbstractQuery implements SpiQuery<T> {
|
||||
// add the rawSql statement - if any
|
||||
if (orderByIsEmpty()) {
|
||||
if (rawSql != null && rawSql.getSql() != null) {
|
||||
order(rawSql.getSql().getOrderBy());
|
||||
orderBy(rawSql.getSql().getOrderBy());
|
||||
}
|
||||
}
|
||||
if (checkPagingOrderBy()) {
|
||||
@@ -1517,7 +1517,6 @@ public class DefaultOrmQuery<T> extends AbstractQuery implements SpiQuery<T> {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public final <A> List<A> findSingleAttributeList() {
|
||||
return server.findSingleAttributeList(this);
|
||||
}
|
||||
@@ -1533,6 +1532,11 @@ public class DefaultOrmQuery<T> extends AbstractQuery implements SpiQuery<T> {
|
||||
return !list.isEmpty() ? list.get(0) : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final <A> Optional<A> findSingleAttributeOrEmpty() {
|
||||
return Optional.ofNullable(findSingleAttribute());
|
||||
}
|
||||
|
||||
@Override
|
||||
public final T findOne() {
|
||||
return server.findOne(this);
|
||||
|
||||
@@ -7,7 +7,9 @@ import io.ebeaninternal.api.BindParams;
|
||||
import io.ebeaninternal.api.SpiEbeanServer;
|
||||
import io.ebeaninternal.api.SpiSqlQuery;
|
||||
import io.ebeaninternal.api.SpiTransaction;
|
||||
import io.ebeaninternal.server.transaction.ExternalJdbcTransaction;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Consumer;
|
||||
@@ -50,6 +52,12 @@ public final class DefaultRelationalQuery extends AbstractQuery implements SpiSq
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SqlQuery usingConnection(Connection connection) {
|
||||
this.transaction = new ExternalJdbcTransaction(connection);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SqlQuery usingMaster() {
|
||||
this.useMaster = true;
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
package io.ebeaninternal.server.type;
|
||||
|
||||
import io.ebean.core.type.ScalarType;
|
||||
import io.ebean.core.type.BasicTypeConverter;
|
||||
import io.ebean.core.type.ScalarType;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.sql.Timestamp;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
@@ -32,6 +35,8 @@ interface ArrayElementConverter<T> {
|
||||
ArrayElementConverter<Double> DOUBLE = new DoubleConverter();
|
||||
ArrayElementConverter<Float> FLOAT = new FloatConverter();
|
||||
ArrayElementConverter<BigDecimal> BIG_DECIMAL = new BigDecimalConverter();
|
||||
ArrayElementConverter<Instant> INSTANT = new InstantConverter();
|
||||
ArrayElementConverter<LocalDate> LOCAL_DATE = new LocalDateConverter();
|
||||
|
||||
class LongConverter implements ArrayElementConverter<Long> {
|
||||
|
||||
@@ -101,6 +106,48 @@ interface ArrayElementConverter<T> {
|
||||
}
|
||||
}
|
||||
|
||||
class InstantConverter implements ArrayElementConverter<Instant> {
|
||||
|
||||
@Override
|
||||
public Instant fromSerialized(Object rawValue) {
|
||||
return fromDbArray(rawValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Instant fromDbArray(Object rawValue) {
|
||||
if (rawValue instanceof Instant) {
|
||||
return (Instant) rawValue;
|
||||
} else if (rawValue instanceof Timestamp) {
|
||||
return ((Timestamp) rawValue).toInstant();
|
||||
} else if (rawValue instanceof String) {
|
||||
return Instant.parse((String) rawValue);
|
||||
} else {
|
||||
throw new IllegalStateException("Instant fromDbArray unsupported for " + rawValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class LocalDateConverter implements ArrayElementConverter<LocalDate> {
|
||||
|
||||
@Override
|
||||
public LocalDate fromSerialized(Object rawValue) {
|
||||
return fromDbArray(rawValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LocalDate fromDbArray(Object rawValue) {
|
||||
if (rawValue instanceof LocalDate) {
|
||||
return (LocalDate) rawValue;
|
||||
} else if (rawValue instanceof java.sql.Date) {
|
||||
return ((java.sql.Date) rawValue).toLocalDate();
|
||||
} else if (rawValue instanceof String) {
|
||||
return LocalDate.parse((String) rawValue);
|
||||
} else {
|
||||
throw new IllegalStateException("Instant fromDbArray unsupported for " + rawValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class BigDecimalConverter implements ArrayElementConverter<BigDecimal> {
|
||||
|
||||
@Override
|
||||
@@ -141,7 +188,7 @@ interface ArrayElementConverter<T> {
|
||||
|
||||
@Override
|
||||
public java.util.UUID fromSerialized(Object rawValue) {
|
||||
return java.util.UUID.fromString((String)rawValue);
|
||||
return java.util.UUID.fromString((String) rawValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -16,6 +16,8 @@ import java.lang.reflect.Type;
|
||||
import java.math.BigDecimal;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Types;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
|
||||
@@ -63,6 +65,12 @@ class ScalarTypeArrayList extends ScalarTypeArrayBase<List> implements ScalarTyp
|
||||
if (valueType.equals(String.class)) {
|
||||
return cache.computeIfAbsent(key, s -> new ScalarTypeArrayList(nullable, "varchar", DocPropertyType.TEXT, ArrayElementConverter.STRING));
|
||||
}
|
||||
if (valueType.equals(Instant.class)) {
|
||||
return cache.computeIfAbsent(key, s -> new ScalarTypeArrayList(nullable, "timestamptz", DocPropertyType.TEXT, ArrayElementConverter.INSTANT));
|
||||
}
|
||||
if (valueType.equals(LocalDate.class)) {
|
||||
return cache.computeIfAbsent(key, s -> new ScalarTypeArrayList(nullable, "date", DocPropertyType.TEXT, ArrayElementConverter.LOCAL_DATE));
|
||||
}
|
||||
throw new IllegalArgumentException("Type [" + valueType + "] not supported for @DbArray mapping");
|
||||
} finally {
|
||||
lock.unlock();
|
||||
|
||||
@@ -8,6 +8,8 @@ import java.lang.reflect.Type;
|
||||
import java.math.BigDecimal;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Types;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -58,6 +60,12 @@ final class ScalarTypeArrayListH2 extends ScalarTypeArrayList {
|
||||
if (valueType.equals(String.class)) {
|
||||
return cache.computeIfAbsent(key, s -> new ScalarTypeArrayListH2(nullable, "varchar", DocPropertyType.TEXT, ArrayElementConverter.STRING));
|
||||
}
|
||||
if (valueType.equals(Instant.class)) {
|
||||
return cache.computeIfAbsent(key, s -> new ScalarTypeArrayListH2(nullable, "timestamp", DocPropertyType.TEXT, ArrayElementConverter.INSTANT));
|
||||
}
|
||||
if (valueType.equals(LocalDate.class)) {
|
||||
return cache.computeIfAbsent(key, s -> new ScalarTypeArrayListH2(nullable, "date", DocPropertyType.TEXT, ArrayElementConverter.LOCAL_DATE));
|
||||
}
|
||||
throw new IllegalArgumentException("Type [" + valueType + "] not supported for @DbArray mapping");
|
||||
} finally {
|
||||
lock.unlock();
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ public class BetweenPropertyExpressionTest extends BaseExpressionTest {
|
||||
public void sqlExpression() {
|
||||
TDSpiExpressionRequest request = new TDSpiExpressionRequest(null);
|
||||
exp("a", "b", 10).addSql(request);
|
||||
Assertions.assertThat(request.sql()).isEqualTo(" ? between a and b");
|
||||
Assertions.assertThat(request.sql()).isEqualTo("? between a and b");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean ddl generation</name>
|
||||
@@ -28,14 +28,14 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core-type</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-all</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core-type</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean postgis types</name>
|
||||
@@ -19,14 +19,14 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-postgres</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<!-- provided scope -->
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-test</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean querybean</name>
|
||||
@@ -17,7 +17,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -63,14 +63,14 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-ddl-generator</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-test</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>querybean-generator</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
@@ -304,6 +304,14 @@ public abstract class PBaseComparable<R, T> extends PBaseValueEqual<R, T> {
|
||||
return _root;
|
||||
}
|
||||
|
||||
/**
|
||||
* Between - value between this property and another property
|
||||
*/
|
||||
public final R betweenProperties(Query.Property<T> highProperty, T value) {
|
||||
expr().betweenProperties(_name, highProperty.toString(), value);
|
||||
return _root;
|
||||
}
|
||||
|
||||
/**
|
||||
* Greater than.
|
||||
*
|
||||
|
||||
@@ -32,7 +32,7 @@ public abstract class PBaseString<R, T> extends PBaseComparable<R, T> {
|
||||
* @param value the equal to bind value
|
||||
* @return the root query bean instance
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(forRemoval = true)
|
||||
public final R equalToType(T value) {
|
||||
expr().eq(_name, value);
|
||||
return _root;
|
||||
@@ -46,7 +46,7 @@ public abstract class PBaseString<R, T> extends PBaseComparable<R, T> {
|
||||
* @param value the equal to bind value
|
||||
* @return the root query bean instance
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(forRemoval = true)
|
||||
public final R notEqualToType(T value) {
|
||||
expr().ne(_name, value);
|
||||
return _root;
|
||||
|
||||
@@ -745,7 +745,7 @@ public abstract class TQRootBean<T, R> {
|
||||
* Add EXISTS sub-query predicate.
|
||||
*/
|
||||
public R exists(Query<?> subQuery) {
|
||||
query.where().exists(subQuery);
|
||||
peekExprList().exists(subQuery);
|
||||
return root;
|
||||
}
|
||||
|
||||
@@ -753,7 +753,7 @@ public abstract class TQRootBean<T, R> {
|
||||
* Add NOT EXISTS sub-query predicate.
|
||||
*/
|
||||
public R notExists(Query<?> subQuery) {
|
||||
query.where().notExists(subQuery);
|
||||
peekExprList().notExists(subQuery);
|
||||
return root;
|
||||
}
|
||||
|
||||
@@ -764,7 +764,7 @@ public abstract class TQRootBean<T, R> {
|
||||
* @param bindValues Optional bind values if the SubQuery uses {@code ? } bind values.
|
||||
*/
|
||||
public final R exists(String sqlSubQuery, Object... bindValues) {
|
||||
query().where().exists(sqlSubQuery, bindValues);
|
||||
peekExprList().exists(sqlSubQuery, bindValues);
|
||||
return root;
|
||||
}
|
||||
|
||||
@@ -775,7 +775,7 @@ public abstract class TQRootBean<T, R> {
|
||||
* @param bindValues Optional bind values if the SubQuery uses {@code ? } bind values.
|
||||
*/
|
||||
public final R notExists(String sqlSubQuery, Object... bindValues) {
|
||||
query().where().notExists(sqlSubQuery, bindValues);
|
||||
peekExprList().notExists(sqlSubQuery, bindValues);
|
||||
return root;
|
||||
}
|
||||
|
||||
@@ -1275,7 +1275,7 @@ public abstract class TQRootBean<T, R> {
|
||||
/**
|
||||
* @deprecated migrate to {@link #orderBy()}.
|
||||
*/
|
||||
@Deprecated(since = "13.19")
|
||||
@Deprecated(since = "13.19", forRemoval = true)
|
||||
public R order() {
|
||||
return root;
|
||||
}
|
||||
@@ -1295,7 +1295,7 @@ public abstract class TQRootBean<T, R> {
|
||||
/**
|
||||
* @deprecated migrate to {@link #orderBy(String)}
|
||||
*/
|
||||
@Deprecated(since = "13.19")
|
||||
@Deprecated(since = "13.19", forRemoval = true)
|
||||
public R order(String orderByClause) {
|
||||
return orderBy(orderByClause);
|
||||
}
|
||||
@@ -1867,6 +1867,28 @@ public abstract class TQRootBean<T, R> {
|
||||
return query.findSingleAttribute();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the query returning a single optional attribute value.
|
||||
* <p>
|
||||
* <h3>Example</h3>
|
||||
* <pre>{@code
|
||||
*
|
||||
* Optional<String> maybeName =
|
||||
* new QCustomer()
|
||||
* .select(name)
|
||||
* .id.eq(42)
|
||||
* .status.eq(NEW)
|
||||
* .findSingleAttributeOrEmpty();
|
||||
*
|
||||
* }</pre>
|
||||
*
|
||||
* @return an optional value for the selected property
|
||||
*/
|
||||
@Nullable
|
||||
public <A> Optional<A> findSingleAttributeOrEmpty() {
|
||||
return query.findSingleAttributeOrEmpty();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the query processing the beans one at a time.
|
||||
* <p>
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
package org.example.domain;
|
||||
|
||||
import io.ebean.annotation.DbArray;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import org.example.domain.finder.ContactFinder;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Size;
|
||||
import java.time.ZonedDateTime;
|
||||
@@ -17,6 +18,11 @@ import java.util.Map;
|
||||
@Table(name = "be_contact")
|
||||
public class Contact extends BaseModel {
|
||||
|
||||
/**
|
||||
* Convenience Finder for 'active record' style.
|
||||
*/
|
||||
public static final ContactFinder find = new ContactFinder();
|
||||
|
||||
@DbArray
|
||||
List<@Size(max=20) String> phoneNumbers = new ArrayList<>();
|
||||
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.example.domain;
|
||||
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.Id;
|
||||
|
||||
@Entity
|
||||
public class PFile {
|
||||
|
||||
@Id
|
||||
long id;
|
||||
String name;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.example.domain;
|
||||
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.Id;
|
||||
|
||||
@Entity
|
||||
public class PLong {
|
||||
|
||||
@Id
|
||||
long id;
|
||||
String name;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.example.domain;
|
||||
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.Id;
|
||||
|
||||
@Entity
|
||||
public class Pinstant {
|
||||
|
||||
@Id
|
||||
long id;
|
||||
String name;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package org.example.domain.finder;
|
||||
|
||||
import io.ebean.Finder;
|
||||
import org.example.domain.Contact;
|
||||
import org.example.domain.query.QContact;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class ContactFinder extends Finder<Long, Contact> {
|
||||
|
||||
public ContactFinder() {
|
||||
super(Contact.class);
|
||||
}
|
||||
|
||||
public QContact typed() {
|
||||
return new QContact();
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
package org.querytest;
|
||||
|
||||
import org.example.domain.Contact;
|
||||
import org.example.domain.Customer;
|
||||
import org.example.domain.query.QCustomer;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.time.LocalDate;
|
||||
@@ -9,6 +11,8 @@ import java.time.ZoneId;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class QCustomerAndOrTest {
|
||||
|
||||
@Test
|
||||
@@ -55,6 +59,30 @@ public class QCustomerAndOrTest {
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOrWithExists() {
|
||||
QCustomer query = Customer.find.typed()
|
||||
.alias("_cust")
|
||||
.or()
|
||||
.name.eq("Superman")
|
||||
.exists(Contact.find.typed()
|
||||
.alias("contact")
|
||||
.firstName.eq("Superman")
|
||||
.raw("contact.customer_id = _cust.id")
|
||||
.query()
|
||||
)
|
||||
.endOr()
|
||||
.select(QCustomer.alias().id);
|
||||
|
||||
query.findList();
|
||||
|
||||
assertThat(query.getGeneratedSql()).isEqualTo(
|
||||
"select _cust.id from be_customer _cust where (" +
|
||||
"_cust.name = ? or exists (select 1 from be_contact contact where " +
|
||||
"contact.first_name = ? and contact.customer_id = _cust.id))"
|
||||
);
|
||||
}
|
||||
|
||||
private Date fiveDaysAgo() {
|
||||
LocalDateTime fiveDaysAgo = LocalDate.now().atStartOfDay().minusDays(5);
|
||||
return new Date(fiveDaysAgo.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
|
||||
|
||||
@@ -63,6 +63,25 @@ public class QCustomerTest {
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void copy() {
|
||||
var origin = new QCustomer()
|
||||
.setDistinct(true)
|
||||
.status.equalTo(Customer.Status.BAD);
|
||||
|
||||
var copy1 = origin.copy().name.isNotNull();
|
||||
var q1 = copy1.query();
|
||||
copy1.findList();
|
||||
|
||||
assertThat(q1.getGeneratedSql()).contains("from be_customer t0 where t0.status = ? and t0.name is not null");
|
||||
|
||||
var copy2 = origin.copy().version.ge(1L);
|
||||
var q2 = copy2.query();
|
||||
copy2.findList();
|
||||
|
||||
assertThat(q2.getGeneratedSql()).contains("from be_customer t0 where t0.status = ? and t0.version >= ?");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void findSingleAttribute() {
|
||||
|
||||
@@ -813,6 +832,30 @@ public class QCustomerTest {
|
||||
new QContact()
|
||||
.firstName.inRangeWith(lastName, "B")
|
||||
.findList();
|
||||
|
||||
new QContact()
|
||||
.firstName.between("A", "B")
|
||||
.findList();
|
||||
}
|
||||
|
||||
@Test
|
||||
void betweenProperties() {
|
||||
var query = new QContact()
|
||||
.firstName.betweenProperties(lastName, "B");
|
||||
|
||||
query.findList();
|
||||
assertThat(query.getGeneratedSql()).contains(" where ? between t0.first_name and t0.last_name");
|
||||
}
|
||||
|
||||
@Test
|
||||
void betweenProperties_notFirstPredicate() {
|
||||
var query = new QContact()
|
||||
.lastName.isNotNull()
|
||||
.firstName.betweenProperties(lastName, "B")
|
||||
.email.isNotNull();
|
||||
|
||||
query.findList();
|
||||
assertThat(query.getGeneratedSql()).contains(" where t0.last_name is not null and ? between t0.first_name and t0.last_name and t0.email is not null");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -1026,6 +1069,32 @@ public class QCustomerTest {
|
||||
assertThat(maxDate).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void findSingleAttributeOrEmpty() {
|
||||
|
||||
Customer cust = new Customer();
|
||||
cust.setName("MaybeIExist yeah");
|
||||
cust.setStatus(Customer.Status.GOOD);
|
||||
cust.setRegistered(new Date());
|
||||
cust.save();
|
||||
|
||||
Optional<String> customerName = new QCustomer()
|
||||
.select(name)
|
||||
.status.eq(Customer.Status.GOOD)
|
||||
.name.startsWith("MaybeIExist")
|
||||
.findSingleAttributeOrEmpty();
|
||||
|
||||
assertThat(customerName).isPresent();
|
||||
|
||||
Optional<String> customerName2 = new QCustomer()
|
||||
.select(name)
|
||||
.status.eq(Customer.Status.GOOD)
|
||||
.name.eq("NahIDoNotExist")
|
||||
.findSingleAttributeOrEmpty();
|
||||
|
||||
assertThat(customerName2).isEmpty();
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testFetchByScalarValue() {
|
||||
|
||||
+6
-6
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-redis</artifactId>
|
||||
@@ -22,28 +22,28 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-test</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>querybean-generator</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-spring-txn</artifactId>
|
||||
@@ -28,7 +28,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-test</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
+6
-6
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean test</name>
|
||||
@@ -33,20 +33,20 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-h2</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-ddl-generator</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -149,14 +149,14 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-jackson-mapper</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-all</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
@@ -409,7 +409,7 @@ class EqlParserTest extends BaseTestCase {
|
||||
Query<Customer> query = parse("where 'x' between name and smallnote");
|
||||
query.findList();
|
||||
|
||||
assertSql(query).contains("where ? between t0.name and t0.smallnote");
|
||||
assertSql(query).contains("where ? between t0.name and t0.smallnote");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -418,7 +418,7 @@ class EqlParserTest extends BaseTestCase {
|
||||
query.setParameter("some", "A");
|
||||
query.findList();
|
||||
|
||||
assertSql(query).contains("where ? between t0.name and t0.smallnote");
|
||||
assertSql(query).contains("where ? between t0.name and t0.smallnote");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -73,9 +73,26 @@ public class TestQueryUsingConnection extends BaseTestCase {
|
||||
assertThat(count).isEqualTo(otherCount + 1);
|
||||
assertThat(otherCount).isEqualTo(masterCount);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@IgnorePlatform({Platform.SQLSERVER, Platform.COCKROACH})
|
||||
@Test
|
||||
public void dtoQueryUsingConnection() {
|
||||
ResetBasicData.reset();
|
||||
|
||||
try (Transaction transaction = DB.createTransaction()) {
|
||||
final CountryDto dto = DB.findDto(CountryDto.class, "select code, name from o_country where code=?")
|
||||
.usingConnection(transaction.connection())
|
||||
.setParameter("NZ")
|
||||
.findOne();
|
||||
|
||||
assertThat(dto).isNotNull();
|
||||
assertEquals("NZ", dto.code);
|
||||
transaction.rollback();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static class CountryDto {
|
||||
final String code;
|
||||
final String name;
|
||||
|
||||
@@ -9,6 +9,8 @@ import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.Id;
|
||||
import jakarta.persistence.Version;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
@@ -58,6 +60,12 @@ public class EArrayBean {
|
||||
@DbArray
|
||||
Set<Status> status2;
|
||||
|
||||
@DbArray
|
||||
List<Instant> times;
|
||||
|
||||
@DbArray
|
||||
List<LocalDate> dates;
|
||||
|
||||
@Version
|
||||
Long version;
|
||||
|
||||
@@ -165,6 +173,24 @@ public class EArrayBean {
|
||||
this.status2 = status2;
|
||||
}
|
||||
|
||||
public List<Instant> getTimes() {
|
||||
return times;
|
||||
}
|
||||
|
||||
public EArrayBean setTimes(List<Instant> times) {
|
||||
this.times = times;
|
||||
return this;
|
||||
}
|
||||
|
||||
public List<LocalDate> getDates() {
|
||||
return dates;
|
||||
}
|
||||
|
||||
public EArrayBean setDates(List<LocalDate> dates) {
|
||||
this.dates = dates;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Long getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
@@ -10,6 +10,8 @@ import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.sql.SQLException;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.util.*;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@@ -58,6 +60,8 @@ class TestDbArray_basic extends BaseTestCase {
|
||||
bean.setStatus2(new LinkedHashSet<>());
|
||||
bean.getStatus2().add(EArrayBean.Status.TWO);
|
||||
bean.getStatus2().add(EArrayBean.Status.ONE);
|
||||
bean.setTimes(List.of(Instant.now(), Instant.now().minusSeconds(60)));
|
||||
bean.setDates(List.of(LocalDate.now(), LocalDate.now().minusDays(1)));
|
||||
|
||||
DB.save(bean);
|
||||
|
||||
@@ -66,6 +70,8 @@ class TestDbArray_basic extends BaseTestCase {
|
||||
assertThat(found.getPhoneNumbers()).containsExactly("4321", "9823");
|
||||
assertThat(found.getDoubs()).hasSize(2);
|
||||
assertThat(found.getFloats()).hasSize(2);
|
||||
assertThat(found.getTimes()).hasSize(2);
|
||||
assertThat(found.getDates()).hasSize(2);
|
||||
|
||||
if (isPostgresCompatible()) {
|
||||
Query<EArrayBean> query = DB.find(EArrayBean.class)
|
||||
|
||||
@@ -355,6 +355,24 @@ public class TestQueryFilterMany extends BaseTestCase {
|
||||
assertSql(sql.get(1)).contains(" and lower(t0.title) like");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFetchAndFilterMany() {
|
||||
|
||||
ResetBasicData.reset();
|
||||
LoggedSql.start();
|
||||
DB.find(Customer.class)
|
||||
.fetch("contacts")
|
||||
.filterMany("contacts.notes").istartsWith("title", "foo")
|
||||
.findList();
|
||||
|
||||
List<String> sql = LoggedSql.stop();
|
||||
|
||||
assertThat(sql.size()).isEqualTo(2);
|
||||
assertSql(sql.get(0)).contains(" from o_customer t0 left join contact t1 on t1.customer_id = t0.id");
|
||||
platformAssertIn(sql.get(1), " from contact_note t0 where (t0.contact_id)");
|
||||
assertSql(sql.get(1)).contains(" and lower(t0.title) like");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFilterManyUsingExpression() {
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ import org.tests.o2m.OmBasicParent;
|
||||
import java.sql.Date;
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
@@ -139,6 +140,32 @@ class TestQuerySingleAttribute extends BaseTestCase {
|
||||
assertThat(name).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void findSingleAttributeOrEmpty() {
|
||||
ResetBasicData.reset();
|
||||
|
||||
Query<Customer> query = DB.find(Customer.class)
|
||||
.select("name")
|
||||
.where().eq("name", "Rob").query();
|
||||
|
||||
Optional<String> name = query.findSingleAttributeOrEmpty();
|
||||
|
||||
assertThat(sqlOf(query)).contains("select t0.name from o_customer t0");
|
||||
assertThat(name).isPresent().contains("Rob");
|
||||
}
|
||||
|
||||
@Test
|
||||
void findSingleAttributeOrEmpty_when_empty() {
|
||||
ResetBasicData.reset();
|
||||
|
||||
Query<Customer> query = DB.find(Customer.class)
|
||||
.select("name")
|
||||
.where().eq("name", "I_Do_Not_ExistO!").query();
|
||||
|
||||
Optional<String> name = query.findSingleAttributeOrEmpty();
|
||||
assertThat(name).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
void findSingleAttributeList_with_join_column() {
|
||||
ResetBasicData.reset();
|
||||
|
||||
@@ -265,6 +265,33 @@ class SqlQueryTests extends BaseTestCase {
|
||||
assertThat(custDtos).isNotEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
void queryUsingConnection() throws SQLException {
|
||||
ResetBasicData.reset();
|
||||
boolean h2 = isH2();
|
||||
|
||||
String sql = h2 ? "select id, name||session_id(), status from o_customer where name is not null"
|
||||
: "select id, name, status from o_customer where name is not null";
|
||||
|
||||
try (Transaction txn = DB.createTransaction()) {
|
||||
String h2SessionId = h2 ? h2SessionId(txn) : null;
|
||||
|
||||
AtomicInteger counter = new AtomicInteger();
|
||||
DB.sqlQuery(sql)
|
||||
.usingConnection(txn.connection())
|
||||
.mapTo(CUST_MAPPER)
|
||||
.findEach(custDto -> {
|
||||
counter.incrementAndGet();
|
||||
assertThat(custDto.name).isNotNull();
|
||||
if (h2) {
|
||||
assertThat(custDto.name).endsWith(h2SessionId);
|
||||
}
|
||||
});
|
||||
|
||||
assertThat(counter.get()).isGreaterThan(0);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void queryUsingTransaction() throws SQLException {
|
||||
ResetBasicData.reset();
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</parent>
|
||||
|
||||
<name>kotlin querybean generator</name>
|
||||
@@ -21,7 +21,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -56,14 +56,14 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-h2</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-ddl-generator</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
+7
@@ -94,6 +94,13 @@ class KotlinLangAdapter implements LangAdapter {
|
||||
writer.append(" * Private constructor for FetchGroup building.").eol();
|
||||
writer.append(" */").eol();
|
||||
writer.append(" private constructor(fetchGroupQuery: Query<%s>) : super(fetchGroupQuery)", shortName).eol();
|
||||
|
||||
writer.eol();
|
||||
writer.append(" /** Return a copy of the query. */").eol();
|
||||
writer.append(" fun copy() : Q%s {", shortName).eol();
|
||||
writer.append(" return Q%s(query().copy())", shortName).eol();
|
||||
writer.append(" }").eol();
|
||||
writer.eol();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+14
-14
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -15,67 +15,67 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-h2</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-clickhouse</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-db2</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-hana</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-hsqldb</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-mysql</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-mariadb</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-nuodb</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-oracle</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-postgres</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-sqlanywhere</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-sqlite</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-sqlserver</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Provided scope so that the H2HistoryTrigger can live in Ebean core
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-h2</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -15,13 +15,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-mysql</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>platforms</artifactId>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<name>ebean parent</name>
|
||||
@@ -52,9 +52,9 @@
|
||||
<ebean-migration-auto.version>1.2</ebean-migration-auto.version>
|
||||
<ebean-migration.version>13.11.1</ebean-migration.version>
|
||||
<ebean-test-containers.version>7.3</ebean-test-containers.version>
|
||||
<ebean-datasource.version>8.9</ebean-datasource.version>
|
||||
<ebean-agent.version>13.25.1</ebean-agent.version>
|
||||
<ebean-maven-plugin.version>13.25.1</ebean-maven-plugin.version>
|
||||
<ebean-datasource.version>8.11</ebean-datasource.version>
|
||||
<ebean-agent.version>13.26.0</ebean-agent.version>
|
||||
<ebean-maven-plugin.version>13.26.0</ebean-maven-plugin.version>
|
||||
<surefire.useModulePath>false</surefire.useModulePath>
|
||||
</properties>
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<dependency>
|
||||
<groupId>ch.qos.logback</groupId>
|
||||
<artifactId>logback-classic</artifactId>
|
||||
<version>1.2.11</version>
|
||||
<version>1.3.12</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</parent>
|
||||
|
||||
<name>querybean generator</name>
|
||||
|
||||
@@ -19,11 +19,6 @@ interface Constants {
|
||||
String DBJSONB = "io.ebean.annotation.DbJsonB";
|
||||
String DBNAME = "io.ebean.annotation.DbName";
|
||||
|
||||
String TQROOTBEAN = "io.ebean.typequery.TQRootBean";
|
||||
String TQASSOCBEAN = "io.ebean.typequery.TQAssocBean";
|
||||
String TQASSOC = "io.ebean.typequery.TQAssoc";
|
||||
String DB = "io.ebean.DB";
|
||||
|
||||
String MODULEINFO = "io.ebean.config.ModuleInfo";
|
||||
String METAINF_MANIFEST = "META-INF/ebean-generated-info.mf";
|
||||
String METAINF_SERVICES_MODULELOADER = "META-INF/services/io.ebean.config.EntityClassRegister";
|
||||
|
||||
@@ -547,4 +547,8 @@ class ProcessingContext implements Constants {
|
||||
Element asElement(TypeMirror mirror) {
|
||||
return typeUtils.asElement(mirror);
|
||||
}
|
||||
|
||||
boolean isNameClash(String shortName) {
|
||||
return propertyTypeMap.isNameClash(shortName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,19 +26,19 @@ class PropertyMeta {
|
||||
/**
|
||||
* Return the type definition given the type short name and flag indicating if it is an associated bean type.
|
||||
*/
|
||||
private String getTypeDefn(String shortName, boolean assoc) {
|
||||
return type.getTypeDefn(shortName, assoc);
|
||||
private String getTypeDefn(String shortName, boolean assoc, boolean fullyQualify) {
|
||||
return type.getTypeDefn(shortName, assoc, fullyQualify);
|
||||
}
|
||||
|
||||
void writeFieldDefn(Append writer, String shortName, boolean assoc) {
|
||||
void writeFieldDefn(Append writer, String shortName, boolean assoc, boolean fullyQualify) {
|
||||
writer.append(" public ");
|
||||
writer.append(getTypeDefn(shortName, assoc));
|
||||
writer.append(getTypeDefn(shortName, assoc, fullyQualify));
|
||||
writer.append(" ").append(name).append(";");
|
||||
}
|
||||
|
||||
void writeFieldAliasDefn(Append writer, String shortName) {
|
||||
void writeFieldAliasDefn(Append writer, String shortName, boolean fullyQualify) {
|
||||
writer.append(" public static ");
|
||||
writer.append(getTypeDefn(shortName, false));
|
||||
writer.append(getTypeDefn(shortName, false, fullyQualify));
|
||||
writer.append(" ").append(name).append(" = _alias.").append(name).append(";");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,12 +11,23 @@ class PropertyType {
|
||||
* The property type className or primitive short name.
|
||||
*/
|
||||
final String propertyType;
|
||||
final String pkg;
|
||||
|
||||
/**
|
||||
* Construct with a className of primitive name for the type.
|
||||
*/
|
||||
PropertyType(String propertyType) {
|
||||
this.propertyType = propertyType;
|
||||
this.pkg = "io.ebean.typequery.";
|
||||
}
|
||||
|
||||
PropertyType(String propertyType, String pkg) {
|
||||
this.propertyType = propertyType;
|
||||
this.pkg = pkg;
|
||||
}
|
||||
|
||||
String propertyType() {
|
||||
return propertyType;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -27,24 +38,28 @@ class PropertyType {
|
||||
/**
|
||||
* Return the type definition for this property.
|
||||
*
|
||||
* @param shortName The short name of the property type
|
||||
* @param assoc flag set to true if the property is on an association bean
|
||||
* @param shortName The short name of the property type
|
||||
* @param assoc flag set to true if the property is on an association bean
|
||||
* @param fullyQualify flag set to fully qualify the type
|
||||
*/
|
||||
String getTypeDefn(String shortName, boolean assoc) {
|
||||
String getTypeDefn(String shortName, boolean assoc, boolean fullyQualify) {
|
||||
String q = fullyQualify ? pkg : "";
|
||||
if (assoc) {
|
||||
// PLong<R>
|
||||
return propertyType + "<R>";
|
||||
// PLong<R>
|
||||
return q + propertyType + "<R>";
|
||||
} else {
|
||||
// PLong<QCustomer>
|
||||
return propertyType + "<Q" + shortName + ">";
|
||||
// PLong<QCustomer>
|
||||
return q + propertyType + "<Q" + shortName + ">";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add any required imports for this property to the allImports set.
|
||||
*/
|
||||
void addImports(Set<String> allImports) {
|
||||
allImports.add("io.ebean.typequery." + propertyType);
|
||||
void addImports(Set<String> allImports, boolean fullyQualify) {
|
||||
if (!fullyQualify) {
|
||||
allImports.add(pkg + propertyType);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+6
-6
@@ -19,18 +19,18 @@ class PropertyTypeArray extends PropertyType {
|
||||
}
|
||||
|
||||
@Override
|
||||
String getTypeDefn(String shortName, boolean assoc) {
|
||||
String getTypeDefn(String shortName, boolean assoc, boolean fullyQualify) {
|
||||
String q = fullyQualify ? pkg : "";
|
||||
if (assoc) {
|
||||
return "PArray<R," + elementShortName + ">";
|
||||
|
||||
return q + "PArray<R," + elementShortName + ">";
|
||||
} else {
|
||||
return "PArray<Q" + shortName + "," + elementShortName + ">";
|
||||
return q + "PArray<Q" + shortName + "," + elementShortName + ">";
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
void addImports(Set<String> allImports) {
|
||||
super.addImports(allImports);
|
||||
void addImports(Set<String> allImports, boolean fullyQualify) {
|
||||
super.addImports(allImports, fullyQualify);
|
||||
allImports.add(elementClass);
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -16,7 +16,7 @@ class PropertyTypeAssoc extends PropertyType {
|
||||
* @param importName the import for the Assoc bean.
|
||||
*/
|
||||
PropertyTypeAssoc(String qAssocTypeName, String importName) {
|
||||
super(qAssocTypeName);
|
||||
super(qAssocTypeName, "");
|
||||
this.importName = importName;
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ class PropertyTypeAssoc extends PropertyType {
|
||||
* All required imports to the allImports set.
|
||||
*/
|
||||
@Override
|
||||
void addImports(Set<String> allImports) {
|
||||
void addImports(Set<String> allImports, boolean fullyQualify) {
|
||||
allImports.add(importName);
|
||||
}
|
||||
|
||||
|
||||
+6
-6
@@ -19,18 +19,18 @@ class PropertyTypeEnum extends PropertyType {
|
||||
}
|
||||
|
||||
@Override
|
||||
String getTypeDefn(String shortName, boolean assoc) {
|
||||
String getTypeDefn(String shortName, boolean assoc, boolean fullyQualify) {
|
||||
String q = fullyQualify ? pkg : "";
|
||||
if (assoc) {
|
||||
return "PEnum<R," + enumShortName + ">";
|
||||
|
||||
return q + "PEnum<R," + enumShortName + ">";
|
||||
} else {
|
||||
return "PEnum<Q" + shortName + "," + enumShortName + ">";
|
||||
return q + "PEnum<Q" + shortName + "," + enumShortName + ">";
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
void addImports(Set<String> allImports) {
|
||||
super.addImports(allImports);
|
||||
void addImports(Set<String> allImports, boolean fullyQualify) {
|
||||
super.addImports(allImports, fullyQualify);
|
||||
allImports.add(enumClass);
|
||||
}
|
||||
|
||||
|
||||
+12
-9
@@ -7,13 +7,8 @@ import java.net.InetAddress;
|
||||
import java.net.URI;
|
||||
import java.net.URL;
|
||||
import java.sql.Timestamp;
|
||||
import java.util.Calendar;
|
||||
import java.util.Currency;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.TimeZone;
|
||||
import java.util.UUID;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* Holds the Property types and how they match to class types.
|
||||
@@ -25,7 +20,9 @@ class PropertyTypeMap {
|
||||
*/
|
||||
private final PropertyType dbJsonType = new PropertyType("PJson");
|
||||
|
||||
private final Map<String,PropertyType> map = new HashMap<>();
|
||||
private final Map<String, PropertyType> map = new HashMap<>();
|
||||
|
||||
private final Set<String> propertyNames;
|
||||
|
||||
PropertyTypeMap() {
|
||||
map.put("boolean", new PropertyType("PBoolean"));
|
||||
@@ -64,11 +61,17 @@ class PropertyTypeMap {
|
||||
map.put("io.ebean.types.Cidr", new PropertyType("PCidr"));
|
||||
addJava8Types();
|
||||
addJodaTypes();
|
||||
|
||||
propertyNames = map.values().stream().map(PropertyType::propertyType).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
boolean isNameClash(String name) {
|
||||
return propertyNames.contains(name);
|
||||
}
|
||||
|
||||
private void addType(Class<?> cls) {
|
||||
String simpleName = cls.getSimpleName();
|
||||
map.put(cls.getName(), new PropertyType("P"+simpleName));
|
||||
map.put(cls.getName(), new PropertyType("P" + simpleName));
|
||||
}
|
||||
|
||||
private void addJava8Types() {
|
||||
|
||||
+6
-7
@@ -24,21 +24,20 @@ class PropertyTypeScalar extends PropertyType {
|
||||
|
||||
protected PropertyTypeScalar(String propertyType, String attributeClass) {
|
||||
super(propertyType);
|
||||
|
||||
final Entry<String, Set<String>> signature = Split.genericsSplit(attributeClass);
|
||||
|
||||
this.attributeCompleteSignature = signature.getKey();
|
||||
this.assocImports = signature.getValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
String getTypeDefn(String shortName, boolean assoc) {
|
||||
String getTypeDefn(String shortName, boolean assoc, boolean fullyQualify) {
|
||||
String q = fullyQualify ? pkg : "";
|
||||
if (assoc) {
|
||||
// PScalarType<R, PhoneNumber>
|
||||
return propertyType + "<R, " + attributeCompleteSignature + ">";
|
||||
return q + propertyType + "<R, " + attributeCompleteSignature + ">";
|
||||
} else {
|
||||
// PScalarType<QCustomer, PhoneNumber>
|
||||
return propertyType + "<Q" + shortName + ", " + attributeCompleteSignature + ">";
|
||||
return q + propertyType + "<Q" + shortName + ", " + attributeCompleteSignature + ">";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,8 +45,8 @@ class PropertyTypeScalar extends PropertyType {
|
||||
* All required imports to the allImports set.
|
||||
*/
|
||||
@Override
|
||||
void addImports(Set<String> allImports) {
|
||||
super.addImports(allImports);
|
||||
void addImports(Set<String> allImports, boolean fullyQualify) {
|
||||
super.addImports(allImports, fullyQualify);
|
||||
allImports.addAll(assocImports);
|
||||
}
|
||||
}
|
||||
|
||||
+22
-30
@@ -21,7 +21,6 @@ class SimpleQueryBeanWriter {
|
||||
private final List<PropertyMeta> properties = new ArrayList<>();
|
||||
private final TypeElement element;
|
||||
private final TypeElement implementsInterface;
|
||||
private String implementsInterfaceFullName;
|
||||
private String implementsInterfaceShortName;
|
||||
private final ProcessingContext processingContext;
|
||||
private final String dbName;
|
||||
@@ -29,10 +28,10 @@ class SimpleQueryBeanWriter {
|
||||
private final boolean isEntity;
|
||||
private final boolean embeddable;
|
||||
|
||||
private String destPackage;
|
||||
private String shortName;
|
||||
private final String destPackage;
|
||||
private final String shortName;
|
||||
private final String shortInnerName;
|
||||
private final String origShortName;
|
||||
private final boolean fullyQualify;
|
||||
private Append writer;
|
||||
|
||||
SimpleQueryBeanWriter(TypeElement element, ProcessingContext processingContext) {
|
||||
@@ -44,11 +43,11 @@ class SimpleQueryBeanWriter {
|
||||
String sn = Util.shortName(nested, beanFullName);
|
||||
this.shortInnerName = Util.shortName(false, sn);
|
||||
this.shortName = sn.replace('.', '$');
|
||||
this.origShortName = shortName;
|
||||
this.isEntity = processingContext.isEntity(element);
|
||||
this.embeddable = processingContext.isEmbeddable(element);
|
||||
this.dbName = findDbName();
|
||||
this.implementsInterface = initInterface(element);
|
||||
this.fullyQualify = processingContext.isNameClash(shortName);
|
||||
}
|
||||
|
||||
private TypeElement initInterface(TypeElement element) {
|
||||
@@ -70,21 +69,10 @@ class SimpleQueryBeanWriter {
|
||||
return isEntity;
|
||||
}
|
||||
|
||||
private boolean isEmbeddable() {
|
||||
return embeddable;
|
||||
}
|
||||
|
||||
private void gatherPropertyDetails() {
|
||||
importTypes.add(beanFullName);
|
||||
if (embeddable) {
|
||||
importTypes.add(Constants.TQASSOC);
|
||||
} else {
|
||||
importTypes.add(Constants.TQASSOCBEAN);
|
||||
importTypes.add(Constants.TQROOTBEAN);
|
||||
}
|
||||
|
||||
if (implementsInterface != null) {
|
||||
implementsInterfaceFullName = implementsInterface.getQualifiedName().toString();
|
||||
String implementsInterfaceFullName = implementsInterface.getQualifiedName().toString();
|
||||
boolean nested = implementsInterface.getNestingKind().isNested();
|
||||
implementsInterfaceShortName = Util.shortName(nested, implementsInterfaceFullName);
|
||||
|
||||
@@ -92,9 +80,6 @@ class SimpleQueryBeanWriter {
|
||||
importTypes.add(Constants.JAVA_COLLECTION);
|
||||
importTypes.add(implementsInterfaceFullName);
|
||||
}
|
||||
if (dbName != null) {
|
||||
importTypes.add(Constants.DB);
|
||||
}
|
||||
addClassProperties();
|
||||
}
|
||||
|
||||
@@ -107,7 +92,7 @@ class SimpleQueryBeanWriter {
|
||||
for (VariableElement field : processingContext.allFields(element)) {
|
||||
PropertyType type = processingContext.getPropertyType(field);
|
||||
if (type != null) {
|
||||
type.addImports(importTypes);
|
||||
type.addImports(importTypes, fullyQualify);
|
||||
properties.add(new PropertyMeta(field.getSimpleName().toString(), type));
|
||||
}
|
||||
}
|
||||
@@ -171,7 +156,7 @@ class SimpleQueryBeanWriter {
|
||||
if (dbName == null) {
|
||||
writer.append(" super(%s.class);", shortName).eol();
|
||||
} else {
|
||||
writer.append(" super(%s.class, DB.byName(\"%s\"));", shortName, dbName).eol();
|
||||
writer.append(" super(%s.class, io.ebean.DB.byName(\"%s\"));", shortName, dbName).eol();
|
||||
}
|
||||
writer.append(" }").eol();
|
||||
writer.eol();
|
||||
@@ -181,7 +166,7 @@ class SimpleQueryBeanWriter {
|
||||
if (dbName == null) {
|
||||
writer.append(" super(%s.class, transaction);", shortName).eol();
|
||||
} else {
|
||||
writer.append(" super(%s.class, DB.byName(\"%s\"), transaction);", shortName, dbName).eol();
|
||||
writer.append(" super(%s.class, io.ebean.DB.byName(\"%s\"), transaction);", shortName, dbName).eol();
|
||||
}
|
||||
writer.append(" }").eol();
|
||||
|
||||
@@ -209,6 +194,12 @@ class SimpleQueryBeanWriter {
|
||||
writer.append(" private Q%s(io.ebean.ExpressionList<%s> filter) {", shortName, shortName).eol();
|
||||
writer.append(" super(filter);").eol();
|
||||
writer.append(" }").eol();
|
||||
|
||||
writer.eol();
|
||||
writer.append(" /** Return a copy of the query bean. */").eol();
|
||||
writer.append(" public Q%s copy() {", shortName).eol();
|
||||
writer.append(" return new Q%s(query().copy());", shortName).eol();
|
||||
writer.append(" }").eol();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -216,7 +207,7 @@ class SimpleQueryBeanWriter {
|
||||
*/
|
||||
private void writeFields() {
|
||||
for (PropertyMeta property : properties) {
|
||||
property.writeFieldDefn(writer, shortName, false);
|
||||
property.writeFieldDefn(writer, shortName, false, fullyQualify);
|
||||
writer.eol();
|
||||
}
|
||||
writer.eol();
|
||||
@@ -233,7 +224,7 @@ class SimpleQueryBeanWriter {
|
||||
writer.append("public final class Q%s {", shortName).eol();
|
||||
} else {
|
||||
writer.append(Constants.AT_TYPEQUERYBEAN).eol();
|
||||
writer.append("public final class Q%s extends TQRootBean<%1$s,Q%1$s> {", shortName).eol();
|
||||
writer.append("public final class Q%s extends io.ebean.typequery.TQRootBean<%1$s,Q%1$s> {", shortName).eol();
|
||||
}
|
||||
writer.eol();
|
||||
}
|
||||
@@ -260,7 +251,7 @@ class SimpleQueryBeanWriter {
|
||||
writer.append(" ").append(Constants.AT_GENERATED).eol();
|
||||
writer.append(" public static final class Alias {").eol();
|
||||
for (PropertyMeta property : properties) {
|
||||
property.writeFieldAliasDefn(writer, shortName);
|
||||
property.writeFieldAliasDefn(writer, shortName, fullyQualify);
|
||||
writer.eol();
|
||||
}
|
||||
writer.append(" }").eol();
|
||||
@@ -268,17 +259,17 @@ class SimpleQueryBeanWriter {
|
||||
|
||||
private void writeAssocClass() {
|
||||
writer.eol();
|
||||
writer.append(" /** Association query bean */").eol();
|
||||
writer.append(" /** Association query bean */").eol();
|
||||
writer.append(" ").append(Constants.AT_GENERATED).eol();
|
||||
writer.append(" ").append(Constants.AT_TYPEQUERYBEAN).eol();
|
||||
if (embeddable) {
|
||||
writer.append(" public static final class Assoc<R> extends TQAssoc<%s,R> {", shortInnerName).eol();
|
||||
writer.append(" public static final class Assoc<R> extends io.ebean.typequery.TQAssoc<%s,R> {", shortInnerName).eol();
|
||||
} else {
|
||||
writer.append(" public static final class Assoc<R> extends TQAssocBean<%s,R,Q%s> {", shortName, shortInnerName).eol();
|
||||
writer.append(" public static final class Assoc<R> extends io.ebean.typequery.TQAssocBean<%s,R,Q%s> {", shortName, shortInnerName).eol();
|
||||
}
|
||||
for (PropertyMeta property : properties) {
|
||||
writer.append(" ");
|
||||
property.writeFieldDefn(writer, shortName, true);
|
||||
property.writeFieldDefn(writer, shortName, true, fullyQualify);
|
||||
writer.eol();
|
||||
}
|
||||
writer.eol();
|
||||
@@ -292,6 +283,7 @@ class SimpleQueryBeanWriter {
|
||||
|
||||
private void writeAssocFilterMany() {
|
||||
writer.eol();
|
||||
writer.append(" @SuppressWarnings({\"unchecked\", \"rawtypes\"})").eol();
|
||||
writer.append(" public final R filterMany(java.util.function.Consumer<Q%s> apply) {", shortName).eol();
|
||||
writer.append(" final io.ebean.ExpressionList list = io.ebean.Expr.factory().expressionList();", shortName).eol();
|
||||
writer.append(" final var qb = new Q%s(list);", shortName).eol();
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>tests</artifactId>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>tests</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>test-java16</artifactId>
|
||||
@@ -18,26 +18,26 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-h2</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>ch.qos.logback</groupId>
|
||||
<artifactId>logback-classic</artifactId>
|
||||
<version>1.2.11</version>
|
||||
<version>1.3.12</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-test</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>querybean-generator</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<artifactId>tests</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>test-kotlin</artifactId>
|
||||
@@ -29,7 +29,7 @@
|
||||
<dependency>
|
||||
<groupId>ch.qos.logback</groupId>
|
||||
<artifactId>logback-classic</artifactId>
|
||||
<version>1.2.11</version>
|
||||
<version>1.3.12</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.validation</groupId>
|
||||
@@ -40,7 +40,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -53,7 +53,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-test</artifactId>
|
||||
<version>13.25.1-jakarta</version>
|
||||
<version>13.26.0-jakarta</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user