mirror of
https://github.com/ebean-orm/ebean.git
synced 2026-09-20 11:17:36 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ad18b6573c | ||
|
|
11632c3a6e | ||
|
|
b066f9c072 | ||
|
|
1e38ed9efc | ||
|
|
2d48dd2fef | ||
|
|
60aa899a34 | ||
|
|
c38c75fdec | ||
|
|
cf275f4edd | ||
|
|
121f4afed8 | ||
|
|
c8621c3a29 | ||
|
|
f83da15d5e | ||
|
|
52729d9802 | ||
|
|
69c25309da | ||
|
|
723a12fd66 | ||
|
|
5cf74f1ee9 | ||
|
|
2c18b4fe97 | ||
|
|
9c9fb70999 | ||
|
|
18e6374a60 | ||
|
|
3fea5ce93d | ||
|
|
43675468ae | ||
|
|
1c038f4629 | ||
|
|
49b6f3dec9 | ||
|
|
346e30217a | ||
|
|
5dc165debf | ||
|
|
d5cb7c3ff1 | ||
|
|
4d08dce033 | ||
|
|
beef4407e3 | ||
|
|
e99f922de6 | ||
|
|
103e8323f2 | ||
|
|
59ed0bb015 | ||
|
|
c0eb896e1f | ||
|
|
7035b4c74c | ||
|
|
85a575e353 | ||
|
|
eb05be286c | ||
|
|
9f5a77fdaa | ||
|
|
42ee75f212 |
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-clickhouse</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-postgres</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-db2</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-h2</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-hana</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-mariadb</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-mysql</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -22,13 +22,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -47,19 +47,19 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-postgres</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-net-postgis-types</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-nuodb</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-oracle</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -22,13 +22,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -47,19 +47,19 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-postgres</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-postgis-types</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-postgres</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-sqlite</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-sqlserver</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -42,13 +42,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-postgres</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -41,7 +41,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-jackson-mapper</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -60,13 +60,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-all</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>composites</artifactId>
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean api</name>
|
||||
|
||||
@@ -1968,8 +1968,8 @@ public interface DatabaseBuilder {
|
||||
DatabaseBuilder setLocalOnlyL2Cache(boolean localOnlyL2Cache);
|
||||
|
||||
/**
|
||||
* Controls if Ebean should ignore <code>&x64;javax.validation.contstraints.NotNull</code> or
|
||||
* <code>&x64;jakarta.validation.contstraints.NotNull</code>
|
||||
* Controls if Ebean should ignore <code>@javax.validation.contstraints.NotNull</code> or
|
||||
* <code>@jakarta.validation.contstraints.NotNull</code>
|
||||
* with respect to generating a <code>NOT NULL</code> column.
|
||||
* <p>
|
||||
* Normally when Ebean sees javax NotNull annotation it means that column is defined as NOT NULL.
|
||||
|
||||
+26
-26
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean bom</name>
|
||||
@@ -89,25 +89,25 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core-type</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -125,13 +125,13 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-jackson-mapper</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-ddl-generator</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -155,37 +155,37 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>querybean-generator</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>kotlin-querybean-generator</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-test</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-redis</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-spring-txn</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<!-- platforms -->
|
||||
@@ -193,79 +193,79 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-clickhouse</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-db2</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-h2</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-hana</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-mariadb</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-mysql</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-nuodb</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-oracle</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-postgres</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-postgis</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-postgis-types</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-sqlite</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-sqlserver</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-core-type</artifactId>
|
||||
@@ -16,7 +16,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
||||
+6
-26
@@ -3,7 +3,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-core</artifactId>
|
||||
@@ -22,7 +22,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -46,7 +46,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core-type</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -159,21 +159,21 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-h2</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-postgres</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-sqlserver</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -235,26 +235,6 @@
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-javadoc-plugin</artifactId>
|
||||
<configuration>
|
||||
<doctitle>Ebean 12</doctitle>
|
||||
<overview>src/main/java/io/ebean/overview.html</overview>
|
||||
<excludePackageNames>io.ebeaninternal.*:io.ebeanservice:io.ebean.common:io.ebean.bean:io.ebean.service:io.ebean.metric:io.ebean.util:io.ebean.config.properties:io.ebean.config.dbplatform</excludePackageNames>
|
||||
<linksource>true</linksource>
|
||||
<overview>src/main/java/com/avaje/ebean/overview.html</overview>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>attach-javadocs</id>
|
||||
<goals>
|
||||
<goal>jar</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
</plugins>
|
||||
|
||||
</build>
|
||||
|
||||
@@ -34,8 +34,8 @@ public final class ScopeTrans {
|
||||
* Explicit set of Exceptions that DO cause a rollback to occur.
|
||||
*/
|
||||
private final ArrayList<Class<? extends Throwable>> rollbackFor;
|
||||
private Boolean restoreBatch;
|
||||
private Boolean restoreBatchOnCascade;
|
||||
private boolean restoreBatch;
|
||||
private boolean restoreBatchOnCascade;
|
||||
private int restoreBatchSize;
|
||||
private Boolean restoreBatchGeneratedKeys;
|
||||
private boolean restoreBatchFlushOnQuery;
|
||||
@@ -61,7 +61,7 @@ public final class ScopeTrans {
|
||||
this.noRollbackFor = txScope.getNoRollbackFor();
|
||||
this.rollbackFor = txScope.getRollbackFor();
|
||||
if (transaction != null) {
|
||||
if (!created && txScope.isBatchSet() || txScope.isBatchOnCascadeSet() || txScope.isBatchSizeSet()) {
|
||||
if (!created) {
|
||||
restoreBatch = transaction.isBatchMode();
|
||||
restoreBatchOnCascade = transaction.isBatchOnCascade();
|
||||
restoreBatchSize = transaction.getBatchSize();
|
||||
@@ -143,15 +143,9 @@ public final class ScopeTrans {
|
||||
} else {
|
||||
nestedCommit = true;
|
||||
transaction.setFlushOnQuery(restoreBatchFlushOnQuery);
|
||||
if (restoreBatch != null) {
|
||||
transaction.setBatchMode(restoreBatch);
|
||||
}
|
||||
if (restoreBatchOnCascade != null) {
|
||||
transaction.setBatchOnCascade(restoreBatchOnCascade);
|
||||
}
|
||||
if (restoreBatchSize > 0) {
|
||||
transaction.setBatchSize(restoreBatchSize);
|
||||
}
|
||||
transaction.setBatchMode(restoreBatch);
|
||||
transaction.setBatchOnCascade(restoreBatchOnCascade);
|
||||
transaction.setBatchSize(restoreBatchSize);
|
||||
if (restoreBatchGeneratedKeys != null) {
|
||||
transaction.setGetGeneratedKeys(restoreBatchGeneratedKeys);
|
||||
}
|
||||
|
||||
@@ -53,4 +53,9 @@ public interface SpiSqlBinding extends SpiCancelableQuery {
|
||||
*/
|
||||
int getBufferFetchSizeHint();
|
||||
|
||||
/**
|
||||
* Set the JDBC fetchSize buffer hint if not explicitly set.
|
||||
*/
|
||||
void setDefaultFetchBuffer(int fetchSize);
|
||||
|
||||
}
|
||||
|
||||
@@ -92,6 +92,12 @@ public abstract class AbstractSqlQueryRequest implements CancelableQuery {
|
||||
|
||||
protected abstract void requestComplete();
|
||||
|
||||
/**
|
||||
* Set the JDBC buffer fetchSize hint if not set explicitly.
|
||||
*/
|
||||
public void setDefaultFetchBuffer(int fetchSize) {
|
||||
query.setDefaultFetchBuffer(fetchSize);
|
||||
}
|
||||
/**
|
||||
* Close the underlying resources.
|
||||
*/
|
||||
|
||||
@@ -300,11 +300,12 @@ public final class InternalConfiguration {
|
||||
}
|
||||
|
||||
DtoQueryEngine createDtoQueryEngine() {
|
||||
return new DtoQueryEngine(binder);
|
||||
return new DtoQueryEngine(binder, config.getJdbcFetchSizeFindEach(), config.getJdbcFetchSizeFindList());
|
||||
}
|
||||
|
||||
RelationalQueryEngine createRelationalQueryEngine() {
|
||||
return new DefaultRelationalQueryEngine(binder, config.getDatabaseBooleanTrue(), config.getPlatformConfig().getDbUuid().useBinaryOptimized());
|
||||
return new DefaultRelationalQueryEngine(binder, config.getDatabaseBooleanTrue(), config.getPlatformConfig().getDbUuid().useBinaryOptimized(),
|
||||
config.getJdbcFetchSizeFindEach(), config.getJdbcFetchSizeFindList());
|
||||
}
|
||||
|
||||
OrmQueryEngine createOrmQueryEngine() {
|
||||
|
||||
@@ -427,7 +427,9 @@ public abstract class BeanPropertyAssoc<T> extends BeanProperty implements STree
|
||||
BeanProperty[] others = target.propertiesBaseScalar();
|
||||
if (descriptor.isRawSqlBased()) {
|
||||
String dbColumn = owner.dbColumn();
|
||||
return new ImportedIdSimple(owner, dbColumn, null, idProp, 0);
|
||||
if (dbColumn != null) {
|
||||
return new ImportedIdSimple(owner, dbColumn, null, idProp, 0);
|
||||
}
|
||||
}
|
||||
if (idProp == null) {
|
||||
return null;
|
||||
|
||||
@@ -14,7 +14,7 @@ final class DtoMetaConstructor {
|
||||
|
||||
private final Class<?>[] types;
|
||||
private final MethodHandle handle;
|
||||
private static final MethodHandles.Lookup LOOKUP = MethodHandles.lookup();
|
||||
private static final MethodHandles.Lookup LOOKUP = MethodHandles.publicLookup();
|
||||
private final ScalarType<?>[] scalarTypes;
|
||||
|
||||
DtoMetaConstructor(TypeManager typeManager, Constructor<?> constructor, Class<?> someClass) throws NoSuchMethodException, IllegalAccessException {
|
||||
|
||||
@@ -13,7 +13,7 @@ import java.sql.SQLException;
|
||||
|
||||
final class DtoMetaProperty implements DtoReadSet {
|
||||
|
||||
private static final MethodHandles.Lookup LOOKUP = MethodHandles.lookup();
|
||||
private static final MethodHandles.Lookup LOOKUP = MethodHandles.publicLookup();
|
||||
|
||||
private final Class<?> dtoType;
|
||||
private final String name;
|
||||
|
||||
@@ -238,12 +238,14 @@ final class CQueryBuilder {
|
||||
query.setMaxRows(0);
|
||||
|
||||
boolean countDistinct = query.isDistinct();
|
||||
boolean useColumnAlias = selectCountWithColumnAlias;
|
||||
boolean withAgg = false;
|
||||
if (!countDistinct) {
|
||||
withAgg = includesAggregation(request, query);
|
||||
if (!withAgg) {
|
||||
// minimise select clause for standard count
|
||||
query.setSelectId();
|
||||
useColumnAlias = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -256,7 +258,7 @@ final class CQueryBuilder {
|
||||
}
|
||||
|
||||
predicates.prepare(true);
|
||||
SqlTree sqlTree = createSqlTree(request, predicates, selectCountWithColumnAlias && withAgg);
|
||||
SqlTree sqlTree = createSqlTree(request, predicates, useColumnAlias);
|
||||
if (SpiQuery.TemporalMode.CURRENT == query.temporalMode()) {
|
||||
sqlTree.addSoftDeletePredicate(query);
|
||||
}
|
||||
|
||||
@@ -295,9 +295,8 @@ final class DefaultDbSqlContext implements DbSqlContext {
|
||||
if (useColumnAlias) {
|
||||
sb.append(' ');
|
||||
sb.append(columnAliasPrefix);
|
||||
sb.append(columnIndex);
|
||||
sb.append(columnIndex++);
|
||||
}
|
||||
columnIndex++;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+24
-1
@@ -29,12 +29,17 @@ public final class DefaultRelationalQueryEngine implements RelationalQueryEngine
|
||||
private final String dbTrueValue;
|
||||
private final boolean binaryOptimizedUUID;
|
||||
private final TimedMetricMap timedMetricMap;
|
||||
private final int defaultFetchSizeFindEach;
|
||||
private final int defaultFetchSizeFindList;
|
||||
|
||||
public DefaultRelationalQueryEngine(Binder binder, String dbTrueValue, boolean binaryOptimizedUUID) {
|
||||
public DefaultRelationalQueryEngine(Binder binder, String dbTrueValue, boolean binaryOptimizedUUID,
|
||||
int defaultFetchSizeFindEach, int defaultFetchSizeFindList) {
|
||||
this.binder = binder;
|
||||
this.dbTrueValue = dbTrueValue == null ? "true" : dbTrueValue;
|
||||
this.binaryOptimizedUUID = binaryOptimizedUUID;
|
||||
this.timedMetricMap = MetricFactory.get().createTimedMetricMap("sql.query.");
|
||||
this.defaultFetchSizeFindEach = defaultFetchSizeFindEach;
|
||||
this.defaultFetchSizeFindList = defaultFetchSizeFindList;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -59,6 +64,9 @@ public final class DefaultRelationalQueryEngine implements RelationalQueryEngine
|
||||
@Override
|
||||
public void findEach(RelationalQueryRequest request, RowConsumer consumer) {
|
||||
try {
|
||||
if (defaultFetchSizeFindEach > 0) {
|
||||
request.setDefaultFetchBuffer(defaultFetchSizeFindEach);
|
||||
}
|
||||
request.executeSql(binder, SpiQuery.Type.ITERATE);
|
||||
request.mapEach(consumer);
|
||||
request.logSummary();
|
||||
@@ -74,6 +82,9 @@ public final class DefaultRelationalQueryEngine implements RelationalQueryEngine
|
||||
@Override
|
||||
public <T> void findEach(RelationalQueryRequest request, RowReader<T> reader, Predicate<T> consumer) {
|
||||
try {
|
||||
if (defaultFetchSizeFindEach > 0) {
|
||||
request.setDefaultFetchBuffer(defaultFetchSizeFindEach);
|
||||
}
|
||||
request.executeSql(binder, SpiQuery.Type.ITERATE);
|
||||
while (request.next()) {
|
||||
if (!consumer.test(reader.read())) {
|
||||
@@ -109,6 +120,9 @@ public final class DefaultRelationalQueryEngine implements RelationalQueryEngine
|
||||
@Override
|
||||
public <T> List<T> findList(RelationalQueryRequest request, RowReader<T> reader) {
|
||||
try {
|
||||
if (defaultFetchSizeFindList > 0) {
|
||||
request.setDefaultFetchBuffer(defaultFetchSizeFindList);
|
||||
}
|
||||
request.executeSql(binder, SpiQuery.Type.LIST);
|
||||
List<T> rows = new ArrayList<>();
|
||||
while (request.next()) {
|
||||
@@ -129,6 +143,9 @@ public final class DefaultRelationalQueryEngine implements RelationalQueryEngine
|
||||
public <T> T findSingleAttribute(RelationalQueryRequest request, Class<T> cls) {
|
||||
ScalarType<T> scalarType = (ScalarType<T>) binder.getScalarType(cls);
|
||||
try {
|
||||
if (defaultFetchSizeFindList > 0) {
|
||||
request.setDefaultFetchBuffer(defaultFetchSizeFindList);
|
||||
}
|
||||
request.executeSql(binder, SpiQuery.Type.ATTRIBUTE);
|
||||
final DataReader dataReader = binder.createDataReader(request.resultSet());
|
||||
T value = null;
|
||||
@@ -151,6 +168,9 @@ public final class DefaultRelationalQueryEngine implements RelationalQueryEngine
|
||||
public <T> List<T> findSingleAttributeList(RelationalQueryRequest request, Class<T> cls) {
|
||||
ScalarType<T> scalarType = (ScalarType<T>) binder.getScalarType(cls);
|
||||
try {
|
||||
if (defaultFetchSizeFindList > 0) {
|
||||
request.setDefaultFetchBuffer(defaultFetchSizeFindList);
|
||||
}
|
||||
request.executeSql(binder, SpiQuery.Type.ATTRIBUTE);
|
||||
final DataReader dataReader = binder.createDataReader(request.resultSet());
|
||||
List<T> rows = new ArrayList<>();
|
||||
@@ -173,6 +193,9 @@ public final class DefaultRelationalQueryEngine implements RelationalQueryEngine
|
||||
public <T> void findSingleAttributeEach(RelationalQueryRequest request, Class<T> cls, Consumer<T> consumer) {
|
||||
ScalarType<T> scalarType = (ScalarType<T>) binder.getScalarType(cls);
|
||||
try {
|
||||
if (defaultFetchSizeFindEach > 0) {
|
||||
request.setDefaultFetchBuffer(defaultFetchSizeFindEach);
|
||||
}
|
||||
request.executeSql(binder, SpiQuery.Type.ATTRIBUTE);
|
||||
final DataReader dataReader = binder.createDataReader(request.resultSet());
|
||||
while (dataReader.next()) {
|
||||
|
||||
@@ -4,8 +4,8 @@ import io.ebean.QueryIterator;
|
||||
import io.ebeaninternal.api.SpiQuery;
|
||||
import io.ebeaninternal.server.core.DtoQueryRequest;
|
||||
import io.ebeaninternal.server.persist.Binder;
|
||||
|
||||
import jakarta.persistence.PersistenceException;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -15,13 +15,20 @@ import java.util.function.Predicate;
|
||||
public final class DtoQueryEngine {
|
||||
|
||||
private final Binder binder;
|
||||
private final int defaultFetchSizeFindEach;
|
||||
private final int defaultFetchSizeFindList;
|
||||
|
||||
public DtoQueryEngine(Binder binder) {
|
||||
public DtoQueryEngine(Binder binder, int defaultFetchSizeFindEach, int defaultFetchSizeFindList) {
|
||||
this.binder = binder;
|
||||
this.defaultFetchSizeFindEach = defaultFetchSizeFindEach;
|
||||
this.defaultFetchSizeFindList = defaultFetchSizeFindList;
|
||||
}
|
||||
|
||||
public <T> List<T> findList(DtoQueryRequest<T> request) {
|
||||
try {
|
||||
if (defaultFetchSizeFindList > 0) {
|
||||
request.setDefaultFetchBuffer(defaultFetchSizeFindList);
|
||||
}
|
||||
request.executeSql(binder, SpiQuery.Type.LIST);
|
||||
List<T> rows = new ArrayList<>();
|
||||
while (request.next()) {
|
||||
@@ -38,6 +45,9 @@ public final class DtoQueryEngine {
|
||||
|
||||
public <T> QueryIterator<T> findIterate(DtoQueryRequest<T> request) {
|
||||
try {
|
||||
if (defaultFetchSizeFindEach > 0) {
|
||||
request.setDefaultFetchBuffer(defaultFetchSizeFindEach);
|
||||
}
|
||||
request.executeSql(binder, SpiQuery.Type.ITERATE);
|
||||
return new DtoQueryIterator<>(request);
|
||||
} catch (SQLException e) {
|
||||
@@ -46,7 +56,10 @@ public final class DtoQueryEngine {
|
||||
}
|
||||
|
||||
public <T> void findEach(DtoQueryRequest<T> request, Consumer<T> consumer) {
|
||||
try {
|
||||
try {
|
||||
if (defaultFetchSizeFindEach > 0) {
|
||||
request.setDefaultFetchBuffer(defaultFetchSizeFindEach);
|
||||
}
|
||||
request.executeSql(binder, SpiQuery.Type.ITERATE);
|
||||
while (request.next()) {
|
||||
consumer.accept(request.readNextBean());
|
||||
@@ -61,6 +74,9 @@ public final class DtoQueryEngine {
|
||||
public <T> void findEach(DtoQueryRequest<T> request, int batchSize, Consumer<List<T>> consumer) {
|
||||
try {
|
||||
List<T> buffer = new ArrayList<>();
|
||||
if (defaultFetchSizeFindEach > 0) {
|
||||
request.setDefaultFetchBuffer(defaultFetchSizeFindEach);
|
||||
}
|
||||
request.executeSql(binder, SpiQuery.Type.ITERATE);
|
||||
while (request.next()) {
|
||||
buffer.add(request.readNextBean());
|
||||
@@ -82,6 +98,9 @@ public final class DtoQueryEngine {
|
||||
|
||||
public <T> void findEachWhile(DtoQueryRequest<T> request, Predicate<T> consumer) {
|
||||
try {
|
||||
if (defaultFetchSizeFindEach > 0) {
|
||||
request.setDefaultFetchBuffer(defaultFetchSizeFindEach);
|
||||
}
|
||||
request.executeSql(binder, SpiQuery.Type.ITERATE);
|
||||
while (request.next()) {
|
||||
if (!consumer.test(request.readNextBean())) {
|
||||
|
||||
@@ -47,7 +47,7 @@ public final class SqlTreeBuilder {
|
||||
private final boolean disableLazyLoad;
|
||||
private final boolean readOnly;
|
||||
private final SpiQuery.TemporalMode temporalMode;
|
||||
private SqlTreeNode rootNode;
|
||||
private final SqlTreeNode rootNode;
|
||||
private boolean sqlDistinct;
|
||||
private final boolean platformDistinctNoLobs;
|
||||
private final SqlTreeCommon common;
|
||||
@@ -73,6 +73,7 @@ public final class SqlTreeBuilder {
|
||||
this.alias = null;
|
||||
this.ctx = null;
|
||||
this.common = new SqlTreeCommon(temporalMode, disableLazyLoad, readOnly, null);
|
||||
this.rootNode = buildRootNode(desc);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -100,12 +101,13 @@ public final class SqlTreeBuilder {
|
||||
this.alias = new SqlTreeAlias(request.baseTableAlias(), temporalMode);
|
||||
this.distinctOnPlatform = builder.isPlatformDistinctOn();
|
||||
this.platformDistinctNoLobs = builder.isPlatformDistinctNoLobs();
|
||||
this.common = new SqlTreeCommon(temporalMode, disableLazyLoad, readOnly, includeJoin);
|
||||
this.rootNode = buildRootNode(desc);
|
||||
String fromForUpdate = builder.fromForUpdate(query);
|
||||
CQueryHistorySupport historySupport = builder.historySupport(query);
|
||||
CQueryDraftSupport draftSupport = builder.draftSupport(query);
|
||||
String colAlias = subQuery ? null : columnAliasPrefix;
|
||||
String colAlias = subQuery || rootNode.isSingleProperty() ? null : columnAliasPrefix;
|
||||
this.ctx = new DefaultDbSqlContext(alias, colAlias, historySupport, draftSupport, fromForUpdate);
|
||||
this.common = new SqlTreeCommon(temporalMode, disableLazyLoad, readOnly, includeJoin);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -113,7 +115,6 @@ public final class SqlTreeBuilder {
|
||||
*/
|
||||
public SqlTree build() {
|
||||
// build the appropriate chain of SelectAdapter's
|
||||
buildRoot(desc);
|
||||
// build the actual String
|
||||
String distinctOn = null;
|
||||
String selectSql = null;
|
||||
@@ -214,8 +215,8 @@ public final class SqlTreeBuilder {
|
||||
return ctx.content();
|
||||
}
|
||||
|
||||
private void buildRoot(STreeType desc) {
|
||||
rootNode = buildSelectChain(null, null, desc, null);
|
||||
private SqlTreeNode buildRootNode(STreeType desc) {
|
||||
SqlTreeNode root = buildSelectChain(null, null, desc, null);
|
||||
if (!rawSql) {
|
||||
alias.addJoin(queryDetail.getFetchPaths(), desc);
|
||||
alias.addJoin(predicates.predicateIncludes(), desc);
|
||||
@@ -224,6 +225,7 @@ public final class SqlTreeBuilder {
|
||||
alias.buildAlias();
|
||||
predicates.parseTableAlias(alias);
|
||||
}
|
||||
return root;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -335,6 +335,13 @@ public final class DefaultDtoQuery<T> extends AbstractQuery implements SpiDtoQue
|
||||
return bindParams;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDefaultFetchBuffer(int fetchSize) {
|
||||
if (bufferFetchSizeHint == 0) {
|
||||
bufferFetchSizeHint = fetchSize;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public DtoQuery<T> setBufferFetchSizeHint(int bufferFetchSizeHint) {
|
||||
this.bufferFetchSizeHint = bufferFetchSizeHint;
|
||||
|
||||
@@ -206,6 +206,13 @@ public final class DefaultRelationalQuery extends AbstractQuery implements SpiSq
|
||||
return bindParams;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setDefaultFetchBuffer(int fetchSize) {
|
||||
if (bufferFetchSizeHint == 0) {
|
||||
bufferFetchSizeHint = fetchSize;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultRelationalQuery setBufferFetchSizeHint(int bufferFetchSizeHint) {
|
||||
this.bufferFetchSizeHint = bufferFetchSizeHint;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean ddl generation</name>
|
||||
@@ -28,14 +28,14 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core-type</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-all</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
+3
@@ -71,6 +71,8 @@ public class PostgresHistoryDdl extends DbTriggerBasedHistoryDdl {
|
||||
apply
|
||||
.append("create or replace function ").append(procedureName).append("() returns trigger as $$").newLine();
|
||||
|
||||
apply.append("-- play-ebean-start").newLine();
|
||||
|
||||
apply.append("declare").newLine()
|
||||
.append(" lowerTs timestamptz;").newLine()
|
||||
.append(" upperTs timestamptz;").newLine();
|
||||
@@ -93,6 +95,7 @@ public class PostgresHistoryDdl extends DbTriggerBasedHistoryDdl {
|
||||
apply
|
||||
.append(" end if;").newLine()
|
||||
.append("end;").newLine()
|
||||
.append("-- play-ebean-end").newLine()
|
||||
.append("$$ LANGUAGE plpgsql;").newLine();
|
||||
|
||||
apply.end();
|
||||
|
||||
+12
-1
@@ -10,6 +10,7 @@
|
||||
-- Type used to hold common partitioning parameters such as period start and end etc
|
||||
------------------------------------------------------------------------------------
|
||||
do $$
|
||||
-- play-ebean-start
|
||||
begin
|
||||
if not exists (select 1 from pg_type where typname = 'partition_meta') THEN
|
||||
create type partition_meta as
|
||||
@@ -22,7 +23,9 @@ begin
|
||||
part_name text
|
||||
);
|
||||
end if;
|
||||
end$$;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$;
|
||||
|
||||
------------------------------------------------------------------------------------
|
||||
-- Function: _partition_create
|
||||
@@ -34,6 +37,7 @@ create or replace function _partition_create(meta partition_meta)
|
||||
language plpgsql
|
||||
set timezone to 'UTC'
|
||||
as $$
|
||||
-- play-ebean-start
|
||||
begin
|
||||
if (meta.schema_name = '') then
|
||||
execute format('create table if not exists %I partition of %I for values from (''%s'') TO (''%s'')', meta.part_name, meta.base_name, meta.period_start, meta.period_end);
|
||||
@@ -42,6 +46,7 @@ begin
|
||||
end if;
|
||||
return meta.part_name;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$;
|
||||
|
||||
|
||||
@@ -60,6 +65,7 @@ create or replace function _partition_meta(
|
||||
language plpgsql
|
||||
set timezone to 'UTC'
|
||||
as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
partName text;
|
||||
meta partition_meta;
|
||||
@@ -92,6 +98,7 @@ begin
|
||||
|
||||
return meta;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$;
|
||||
|
||||
------------------------------------------------------------------------------------
|
||||
@@ -108,6 +115,7 @@ create or replace function _partition_over(
|
||||
returns TABLE(of_date date)
|
||||
language plpgsql
|
||||
as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
endDate date;
|
||||
begin
|
||||
@@ -132,6 +140,7 @@ begin
|
||||
return query select s::date from generate_series(fromDate, endDate, '1 month') s;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$;
|
||||
|
||||
|
||||
@@ -158,11 +167,13 @@ create or replace function partition(
|
||||
language plpgsql
|
||||
set timezone to 'UTC'
|
||||
as $$
|
||||
-- play-ebean-start
|
||||
begin
|
||||
perform _partition_create(_partition_meta(mode, poDate, baseName, schemaName))
|
||||
from _partition_over(mode, fromDate, partitionCount) poDate;
|
||||
return 'done';
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$;
|
||||
</ddl-script>
|
||||
|
||||
|
||||
+24
-4
@@ -24,7 +24,9 @@ GO
|
||||
-- deletes all indices referring to TABLE.COLUMN
|
||||
--
|
||||
CREATE OR ALTER PROCEDURE usp_ebean_drop_indices @tableName nvarchar(255), @columnName nvarchar(255)
|
||||
AS SET NOCOUNT ON
|
||||
AS
|
||||
-- play-ebean-start
|
||||
SET NOCOUNT ON
|
||||
declare @sql nvarchar(1000)
|
||||
declare @indexName nvarchar(255)
|
||||
BEGIN
|
||||
@@ -44,6 +46,7 @@ BEGIN
|
||||
CLOSE index_cursor;
|
||||
DEALLOCATE index_cursor;
|
||||
END
|
||||
-- play-ebean-end
|
||||
GO
|
||||
|
||||
--
|
||||
@@ -51,7 +54,9 @@ GO
|
||||
-- deletes the default constraint, which has a random name
|
||||
--
|
||||
CREATE OR ALTER PROCEDURE usp_ebean_drop_default_constraint @tableName nvarchar(255), @columnName nvarchar(255)
|
||||
AS SET NOCOUNT ON
|
||||
AS
|
||||
-- play-ebean-start
|
||||
SET NOCOUNT ON
|
||||
declare @tmp nvarchar(1000)
|
||||
BEGIN
|
||||
select @tmp = t1.name from sys.default_constraints t1
|
||||
@@ -60,6 +65,7 @@ BEGIN
|
||||
|
||||
if @tmp is not null EXEC('alter table [' + @tableName +'] drop constraint ' + @tmp);
|
||||
END
|
||||
-- play-ebean-end
|
||||
GO
|
||||
|
||||
--
|
||||
@@ -67,7 +73,9 @@ GO
|
||||
-- deletes constraints and foreign keys refering to TABLE.COLUMN
|
||||
--
|
||||
CREATE OR ALTER PROCEDURE usp_ebean_drop_constraints @tableName nvarchar(255), @columnName nvarchar(255)
|
||||
AS SET NOCOUNT ON
|
||||
AS
|
||||
-- play-ebean-start
|
||||
SET NOCOUNT ON
|
||||
declare @sql nvarchar(1000)
|
||||
declare @constraintName nvarchar(255)
|
||||
BEGIN
|
||||
@@ -93,6 +101,7 @@ BEGIN
|
||||
CLOSE name_cursor;
|
||||
DEALLOCATE name_cursor;
|
||||
END
|
||||
-- play-ebean-end
|
||||
GO
|
||||
|
||||
--
|
||||
@@ -100,7 +109,9 @@ GO
|
||||
-- deletes the column annd ensures that all indices and constraints are dropped first
|
||||
--
|
||||
CREATE OR ALTER PROCEDURE usp_ebean_drop_column @tableName nvarchar(255), @columnName nvarchar(255)
|
||||
AS SET NOCOUNT ON
|
||||
AS
|
||||
-- play-ebean-start
|
||||
SET NOCOUNT ON
|
||||
declare @sql nvarchar(1000)
|
||||
BEGIN
|
||||
EXEC usp_ebean_drop_indices @tableName, @columnName;
|
||||
@@ -110,6 +121,7 @@ BEGIN
|
||||
set @sql = 'alter table [' + @tableName + '] drop column [' + @columnName + ']';
|
||||
EXECUTE(@sql);
|
||||
END
|
||||
-- play-ebean-end
|
||||
GO
|
||||
</ddl-script>
|
||||
<ddl-script name="create procs" platforms="mysql mariadb" init="true">-- Inital script to create stored procedures etc for mysql platform
|
||||
@@ -121,6 +133,7 @@ delimiter $$
|
||||
-- deletes all constraints and foreign keys referring to TABLE.COLUMN
|
||||
--
|
||||
CREATE PROCEDURE usp_ebean_drop_foreign_keys(IN p_table_name VARCHAR(255), IN p_column_name VARCHAR(255))
|
||||
-- play-ebean-start
|
||||
BEGIN
|
||||
DECLARE done INT DEFAULT FALSE;
|
||||
DECLARE c_fk_name CHAR(255);
|
||||
@@ -143,6 +156,7 @@ END LOOP;
|
||||
|
||||
CLOSE curs;
|
||||
END
|
||||
-- play-ebean-end
|
||||
$$
|
||||
|
||||
DROP PROCEDURE IF EXISTS usp_ebean_drop_column;
|
||||
@@ -153,12 +167,14 @@ delimiter $$
|
||||
-- deletes the column and ensures that all indices and constraints are dropped first
|
||||
--
|
||||
CREATE PROCEDURE usp_ebean_drop_column(IN p_table_name VARCHAR(255), IN p_column_name VARCHAR(255))
|
||||
-- play-ebean-start
|
||||
BEGIN
|
||||
CALL usp_ebean_drop_foreign_keys(p_table_name, p_column_name);
|
||||
SET @sql = CONCAT('ALTER TABLE `', p_table_name, '` DROP COLUMN `', p_column_name, '`');
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
END
|
||||
-- play-ebean-end
|
||||
$$
|
||||
</ddl-script>
|
||||
|
||||
@@ -170,6 +186,7 @@ delimiter $$
|
||||
--
|
||||
CREATE OR REPLACE PROCEDURE usp_ebean_drop_foreign_keys(IN table_name NVARCHAR(256), IN column_name NVARCHAR(256))
|
||||
AS
|
||||
-- play-ebean-start
|
||||
BEGIN
|
||||
DECLARE foreign_key_names TABLE(CONSTRAINT_NAME NVARCHAR(256), TABLE_NAME NVARCHAR(256));
|
||||
DECLARE i INT;
|
||||
@@ -181,6 +198,7 @@ EXEC 'ALTER TABLE "' || ESCAPE_DOUBLE_QUOTES(:foreign_key_names.TABLE_NAME[i]) |
|
||||
END FOR;
|
||||
|
||||
END;
|
||||
-- play-ebean-end
|
||||
$$
|
||||
|
||||
delimiter $$
|
||||
@@ -190,10 +208,12 @@ delimiter $$
|
||||
--
|
||||
CREATE OR REPLACE PROCEDURE usp_ebean_drop_column(IN table_name NVARCHAR(256), IN column_name NVARCHAR(256))
|
||||
AS
|
||||
-- play-ebean-start
|
||||
BEGIN
|
||||
CALL usp_ebean_drop_foreign_keys(table_name, column_name);
|
||||
EXEC 'ALTER TABLE "' || UPPER(ESCAPE_DOUBLE_QUOTES(table_name)) || '" DROP ("' || UPPER(ESCAPE_DOUBLE_QUOTES(column_name)) || '")';
|
||||
END;
|
||||
-- play-ebean-end
|
||||
$$
|
||||
</ddl-script>
|
||||
</extra-ddl>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core-type</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean net postgis types</name>
|
||||
@@ -19,14 +19,14 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-postgres</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<!-- provided scope -->
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-test</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean postgis types</name>
|
||||
@@ -19,14 +19,14 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-postgres</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<!-- provided scope -->
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-test</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean querybean</name>
|
||||
@@ -17,7 +17,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -59,14 +59,14 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-ddl-generator</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-test</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>querybean-generator</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
@@ -196,7 +196,7 @@ public abstract class TQAssocBean<T, R, QB> extends TQAssoc<T, R> {
|
||||
return _root;
|
||||
}
|
||||
|
||||
@Deprecated(forRemoval = true)
|
||||
/** Deprecated(forRemoval = true) */
|
||||
protected final R _filterMany(String expressions, Object... params) {
|
||||
expr().filterMany(_name, expressions, params);
|
||||
return _root;
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
package org.example.domain;
|
||||
|
||||
import jakarta.persistence.Embeddable;
|
||||
import jakarta.persistence.Embedded;
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.Id;
|
||||
|
||||
@Entity
|
||||
public class MyInnerEmb {
|
||||
|
||||
@Embeddable
|
||||
public static class EmbAddr {
|
||||
final long streetNum;
|
||||
final String line1;
|
||||
|
||||
public EmbAddr(long streetNum, String line1) {
|
||||
this.streetNum = streetNum;
|
||||
this.line1 = line1;
|
||||
}
|
||||
}
|
||||
|
||||
@Id
|
||||
long id;
|
||||
String one;
|
||||
|
||||
@Embedded
|
||||
EmbAddr address;
|
||||
|
||||
public long id() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public MyInnerEmb id(long id) {
|
||||
this.id = id;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String one() {
|
||||
return one;
|
||||
}
|
||||
|
||||
public MyInnerEmb one(String beanOne) {
|
||||
this.one = beanOne;
|
||||
return this;
|
||||
}
|
||||
|
||||
public EmbAddr address() {
|
||||
return address;
|
||||
}
|
||||
|
||||
public MyInnerEmb setAddress(EmbAddr address) {
|
||||
this.address = address;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
+6
-6
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-redis</artifactId>
|
||||
@@ -29,35 +29,35 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-api</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-test</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>querybean-generator</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ebean-spring-txn</artifactId>
|
||||
@@ -28,7 +28,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-test</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
+6
-6
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</parent>
|
||||
|
||||
<name>ebean test</name>
|
||||
@@ -33,20 +33,20 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-h2</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-ddl-generator</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -149,14 +149,14 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-jackson-mapper</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-all</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ class Config {
|
||||
/**
|
||||
* Common optional docker parameters that we just transfer to docker properties.
|
||||
*/
|
||||
private static final String[] DOCKER_TEST_PARAMS = {"fastStartMode", "inMemory", "initSqlFile", "seedSqlFile", "adminUser", "adminPassword", "extraDb", "extraDb.dbName", "extraDb.username", "extraDb.password", "extraDb.extensions", "extraDb.initSqlFile", "extraDb.seedSqlFile"};
|
||||
private static final String[] DOCKER_TEST_PARAMS = {"fastStartMode", "inMemory", "initSqlFile", "seedSqlFile", "adminUser", "adminPassword", "extraDb", "extraDb.dbName", "extraDb.username", "extraDb.password", "extraDb.extensions", "extraDb.initSqlFile", "extraDb.seedSqlFile", "createOptions", "configOptions"};
|
||||
private static final String[] DOCKER_PLATFORM_PARAMS = {"containerName", "image", "internalPort", "startMode", "shutdownMode", "maxReadyAttempts", "tmpfs", "collation", "characterSet"};
|
||||
|
||||
private static final String DDL_MODE_OPTIONS = "dropCreate, create, none, migration, createOnly or migrationDropCreate";
|
||||
|
||||
@@ -42,19 +42,22 @@ public class TestBatchInsertFlush extends BaseTestCase {
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
Customer customer = ResetBasicData.createCustomer("BatchFlushPreInsert " + i, null, null, 3);
|
||||
customer.addContact(new Contact("Fred" + i, "Blue"));
|
||||
customer.addContact(new Contact("BatchFlush" + i, "Blue"));
|
||||
customers.add(customer);
|
||||
}
|
||||
|
||||
for (int i = 3; i < 6; i++) {
|
||||
Customer customer = ResetBasicData.createCustomer("BatchFlushPostInsert " + i, null, null, 3);
|
||||
customer.addContact(new Contact("Fred" + i, "Blue"));
|
||||
customer.addContact(new Contact("BatchFlush" + i, "Blue"));
|
||||
customers.add(customer);
|
||||
}
|
||||
|
||||
DB.saveAll(customers);
|
||||
|
||||
txn.commit();
|
||||
} finally {
|
||||
DB.find(Customer.class).where().startsWith("name", "BatchFlush").delete();
|
||||
DB.find(Contact.class).where().startsWith("firstName", "BatchFlush").startsWith("lastName", "Blue").delete();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ public class TestLazyJoin2 extends BaseTestCase {
|
||||
assertNotNull(billingAddress);
|
||||
|
||||
List<Order> list = DB.find(Order.class).fetchLazy("customer", "name")
|
||||
.fetch("customer.contacts", "contactName, phone, email").fetch("customer.shippingAddress")
|
||||
.fetch("customer.contacts", "firstName, lastName, phone, email").fetch("customer.shippingAddress")
|
||||
.where().eq("status", Order.Status.NEW).order().asc("id").findList();
|
||||
|
||||
Order order2 = list.get(0);
|
||||
|
||||
+22
-16
@@ -52,24 +52,30 @@ public class TestBeanCacheContactLazyLoad extends BaseTestCase {
|
||||
|
||||
DB.save(contact);
|
||||
|
||||
// Only get two properties, so we have to lazy-load later
|
||||
final Contact contactDb = DB.find(Contact.class).where().eq("email", "tim@button.com").select("email,lastName").findOne();
|
||||
assertThat(contactDb).isNotNull();
|
||||
LoggedSql.start();
|
||||
contactDb.setLastName("Buttonnnn");
|
||||
List<String> sql = LoggedSql.collect();
|
||||
assertThat(sql).isEmpty(); // setter did not trigger lazy load
|
||||
try {
|
||||
|
||||
// trigger lazy load
|
||||
assertThat(contactDb.getPhone()).isEqualTo("1234567890");
|
||||
sql = LoggedSql.collect();
|
||||
assertThat(sql).isNotEmpty(); // Lazy-load took place
|
||||
// Only get two properties, so we have to lazy-load later
|
||||
final Contact contactDb = DB.find(Contact.class).where().eq("email", "tim@button.com").select("email,lastName").findOne();
|
||||
assertThat(contactDb).isNotNull();
|
||||
LoggedSql.start();
|
||||
contactDb.setLastName("Buttonnnn");
|
||||
List<String> sql = LoggedSql.collect();
|
||||
assertThat(sql).isEmpty(); // setter did not trigger lazy load
|
||||
|
||||
final Contact contactDb2 = DB.find(Contact.class).where().eq("email", "tim@button.com").select("email,lastName").findOne();
|
||||
sql = LoggedSql.stop();
|
||||
assertThat(sql).isEmpty(); // We expect that the bean was loaded from cache
|
||||
assertThat(contactDb2).isNotNull();
|
||||
assertThat(contactDb2.getLastName()).isEqualTo("Button");
|
||||
// trigger lazy load
|
||||
assertThat(contactDb.getPhone()).isEqualTo("1234567890");
|
||||
sql = LoggedSql.collect();
|
||||
assertThat(sql).isNotEmpty(); // Lazy-load took place
|
||||
|
||||
final Contact contactDb2 = DB.find(Contact.class).where().eq("email", "tim@button.com").select("email,lastName").findOne();
|
||||
sql = LoggedSql.stop();
|
||||
assertThat(sql).isEmpty(); // We expect that the bean was loaded from cache
|
||||
assertThat(contactDb2).isNotNull();
|
||||
assertThat(contactDb2.getLastName()).isEqualTo("Button");
|
||||
} finally {
|
||||
DB.delete(customer);
|
||||
DB.find(Contact.class).where().eq("email", "tim@button.com").delete();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package org.tests.model.basic;
|
||||
|
||||
import io.ebean.annotation.Sql;
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.OneToOne;
|
||||
import org.tests.model.composite.CkeUser;
|
||||
|
||||
@Entity
|
||||
@Sql
|
||||
public class OtherAggregate {
|
||||
|
||||
@OneToOne
|
||||
CkeUser user;
|
||||
|
||||
int totalContacts;
|
||||
|
||||
public CkeUser getUser() {
|
||||
return user;
|
||||
}
|
||||
|
||||
public void setUser(CkeUser user) {
|
||||
this.user = user;
|
||||
}
|
||||
|
||||
public int getTotalContacts() {
|
||||
return totalContacts;
|
||||
}
|
||||
|
||||
public void setTotalContacts(int totalContacts) {
|
||||
this.totalContacts = totalContacts;
|
||||
}
|
||||
}
|
||||
@@ -26,7 +26,7 @@ public class ResetBasicData {
|
||||
// OK, test data not modified
|
||||
outputCustomerIds();
|
||||
} else {
|
||||
outputState();
|
||||
outputState(true);
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -45,11 +45,11 @@ public class ResetBasicData {
|
||||
me.insertProducts();
|
||||
me.insertTestCustAndOrders();
|
||||
});
|
||||
outputState();
|
||||
outputState(false);
|
||||
runOnce = true;
|
||||
}
|
||||
|
||||
private static void outputState() {
|
||||
private static void outputState(boolean warning) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("CustomerIds:");
|
||||
server.find(Customer.class).findEach(c -> sb.append(' ').append(c.getId()));
|
||||
@@ -59,8 +59,13 @@ public class ResetBasicData {
|
||||
server.find(Country.class).findEach(c -> sb.append(' ').append(c.getCode()));
|
||||
sb.append(", Products:");
|
||||
server.find(Product.class).findEach(c -> sb.append(' ').append(c.getId()));
|
||||
System.err.println("WARNING: basic test data was modified. Current content:");
|
||||
System.err.println(sb);
|
||||
if (warning) {
|
||||
System.err.println("WARNING: basic test data was modified. Current content:");
|
||||
System.err.println(sb);
|
||||
} else {
|
||||
System.out.println("ResetBasicData. basic test data was initialized Current content:");
|
||||
System.out.println(sb);
|
||||
}
|
||||
}
|
||||
|
||||
private static void outputCustomerIds() {
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
package org.tests.model.rawsql;
|
||||
|
||||
import io.ebean.DB;
|
||||
import io.ebean.RawSql;
|
||||
import io.ebean.RawSqlBuilder;
|
||||
import io.ebean.xtest.BaseTestCase;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.tests.model.basic.OtherAggregate;
|
||||
import org.tests.model.composite.CkeUser;
|
||||
import org.tests.model.composite.CkeUserKey;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class TestRawSqlAssocOneComplexId extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
void test() {
|
||||
CkeUser user0 = new CkeUser();
|
||||
user0.setUserPK(new CkeUserKey(89, "OneToOne"));
|
||||
user0.setName("Other");
|
||||
DB.save(user0);
|
||||
|
||||
String sql =
|
||||
"select username, cod_cpny, name, 42 as totalContacts \n" +
|
||||
"from cke_user where username = ? and cod_cpny = ?";
|
||||
|
||||
RawSql rawSql = RawSqlBuilder.parse(sql)
|
||||
.columnMapping("username", "user.userPK.username")
|
||||
.columnMapping("cod_cpny", "user.userPK.codCompany")
|
||||
.columnMapping("name", "user.name")
|
||||
.create();
|
||||
|
||||
List<OtherAggregate> l0 =
|
||||
DB.find(OtherAggregate.class)
|
||||
.setRawSql(rawSql)
|
||||
.setParameters("OneToOne", 89)
|
||||
.findList();
|
||||
|
||||
assertThat(l0).hasSize(1);
|
||||
OtherAggregate other = l0.get(0);
|
||||
|
||||
assertThat(other.getTotalContacts()).isEqualTo(42);
|
||||
assertThat(other.getUser()).isNotNull();
|
||||
assertThat(other.getUser().getUserPK().getUsername()).isEqualTo("OneToOne");
|
||||
assertThat(other.getUser().getUserPK().getCodCompany()).isEqualTo(89);
|
||||
assertThat(other.getUser().getName()).isEqualTo("Other");
|
||||
|
||||
DB.delete(user0);
|
||||
}
|
||||
}
|
||||
@@ -14,10 +14,10 @@ import java.util.List;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
public class TestRowCount extends BaseTestCase {
|
||||
class TestRowCount extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
void test() {
|
||||
ResetBasicData.reset();
|
||||
|
||||
LoggedSql.start();
|
||||
@@ -46,7 +46,7 @@ public class TestRowCount extends BaseTestCase {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void find_count_distinct_singleProperty() {
|
||||
void find_count_distinct_singleProperty() {
|
||||
ResetBasicData.reset();
|
||||
|
||||
Query<Customer> query = DB.find(Customer.class)
|
||||
@@ -57,13 +57,13 @@ public class TestRowCount extends BaseTestCase {
|
||||
|
||||
int count = query.findCount();
|
||||
|
||||
assertThat(sqlOf(query)).contains("select count(distinct t0.anniversary) from o_customer t0 where t0.status = ?");
|
||||
// never see column alias used with count distinct on single column
|
||||
assertThat(query.getGeneratedSql()).contains("select count(distinct t0.anniversary) from o_customer t0 where t0.status = ?");
|
||||
assertThat(count).isGreaterThan(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void find_count_distinct_multipleProperties() {
|
||||
|
||||
void find_count_distinct_multipleProperties() {
|
||||
ResetBasicData.reset();
|
||||
|
||||
Query<Customer> query = DB.find(Customer.class)
|
||||
@@ -72,7 +72,32 @@ public class TestRowCount extends BaseTestCase {
|
||||
|
||||
int count = query.findCount();
|
||||
|
||||
assertThat(sqlOf(query)).contains("select count(*) from ( select distinct t0.anniversary, t0.status from o_customer t0)");
|
||||
if (isSqlServer() || isH2() || isMariaDB() || isMySql()) {
|
||||
assertThat(query.getGeneratedSql()).contains("select count(*) from ( select distinct t0.anniversary c0, t0.status c1 from o_customer t0)");
|
||||
} else {
|
||||
assertThat(query.getGeneratedSql()).contains("select count(*) from ( select distinct t0.anniversary, t0.status from o_customer t0)");
|
||||
}
|
||||
assertThat(count).isGreaterThan(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
void find_count_distinct_multiplePropertiesSameColumn() {
|
||||
ResetBasicData.reset();
|
||||
|
||||
Query<Customer> query = DB.find(Customer.class)
|
||||
.setDistinct(true)
|
||||
.select("id, anniversary, status")
|
||||
.fetch("billingAddress", "id, city")
|
||||
.fetch("shippingAddress", "id, city");
|
||||
|
||||
int count = query.findCount();
|
||||
|
||||
if (isSqlServer() || isH2() || isMariaDB() || isMySql()) {
|
||||
// must use column alias
|
||||
assertThat(query.getGeneratedSql()).contains("select count(*) from ( select distinct t0.anniversary c0, t0.status c1, t1.id c2, t1.city c3, t2.id c4, t2.city c5 from o_customer t0 left join o_address t1 on t1.id = t0.billing_address_id left join o_address t2 on t2.id = t0.shipping_address_id)");
|
||||
} else {
|
||||
assertThat(query.getGeneratedSql()).contains("select count(*) from ( select distinct t0.anniversary, t0.status, t1.id, t1.city, t2.id, t2.city from o_customer t0 left join o_address t1 on t1.id = t0.billing_address_id left join o_address t2 on t2.id = t0.shipping_address_id)");
|
||||
}
|
||||
assertThat(count).isGreaterThan(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,158 @@
|
||||
package org.tests.query.other;
|
||||
|
||||
import io.ebean.DB;
|
||||
import io.ebean.Transaction;
|
||||
import io.ebean.annotation.Platform;
|
||||
import io.ebean.xtest.BaseTestCase;
|
||||
import io.ebean.xtest.ForPlatform;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.tests.model.basic.EBasic;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* This test ensures that MariaDb uses the correct streaming result in findEach queries.
|
||||
* See Issue #56.
|
||||
*/
|
||||
public class TestFindIterateMariaDb extends BaseTestCase {
|
||||
|
||||
@BeforeEach
|
||||
public void setup() {
|
||||
// we need at least > fetchSize beans
|
||||
if (DB.find(EBasic.class).findCount() < 1000) {
|
||||
for (int i = 0; i < 1000; i++) {
|
||||
EBasic dumbModel = new EBasic();
|
||||
dumbModel.setName("Goodbye now");
|
||||
DB.save(dumbModel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class DtoBasic {
|
||||
private String name;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@ForPlatform(Platform.MARIADB)
|
||||
public void testStreamingOnSqlQueryFindEach() {
|
||||
|
||||
try (Transaction txn = DB.beginTransaction()) {
|
||||
AtomicBoolean mariadbStreaming = new AtomicBoolean();
|
||||
DB.sqlQuery("select name from e_basic").findEach(bean -> {
|
||||
if (!mariadbStreaming.get() && isMariaDbStreaming()) {
|
||||
mariadbStreaming.set(true);
|
||||
}
|
||||
});
|
||||
assertThat(mariadbStreaming.get()).isTrue();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@ForPlatform(Platform.MARIADB)
|
||||
public void testStreamingOnOrmFindEach() {
|
||||
|
||||
try (Transaction txn = DB.beginTransaction()) {
|
||||
AtomicBoolean mariadbStreaming = new AtomicBoolean();
|
||||
DB.find(EBasic.class).findEach(bean -> {
|
||||
if (!mariadbStreaming.get() && isMariaDbStreaming()) {
|
||||
mariadbStreaming.set(true);
|
||||
}
|
||||
});
|
||||
assertThat(mariadbStreaming.get()).isTrue();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@ForPlatform(Platform.MARIADB)
|
||||
public void testStreamingOnOrmAsDtoFindEach() {
|
||||
|
||||
try (Transaction txn = DB.beginTransaction()) {
|
||||
AtomicBoolean mariadbStreaming = new AtomicBoolean();
|
||||
DB.find(EBasic.class).select("name").asDto(DtoBasic.class).findEach(bean -> {
|
||||
if (!mariadbStreaming.get() && isMariaDbStreaming()) {
|
||||
mariadbStreaming.set(true);
|
||||
}
|
||||
});
|
||||
assertThat(mariadbStreaming.get()).isTrue();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@ForPlatform(Platform.MARIADB)
|
||||
public void testStreamingOnDtoFindEach() {
|
||||
|
||||
try (Transaction txn = DB.beginTransaction()) {
|
||||
AtomicBoolean mariadbStreaming = new AtomicBoolean();
|
||||
DB.findDto(DtoBasic.class, "select name from e_basic").findEach(bean -> {
|
||||
if (!mariadbStreaming.get() && isMariaDbStreaming()) {
|
||||
mariadbStreaming.set(true);
|
||||
}
|
||||
});
|
||||
assertThat(mariadbStreaming.get()).isTrue();
|
||||
|
||||
}
|
||||
}
|
||||
@Test
|
||||
@ForPlatform(Platform.MARIADB)
|
||||
public void testStreamingOnDtoFindEachWhile() {
|
||||
|
||||
try (Transaction txn = DB.beginTransaction()) {
|
||||
AtomicBoolean mariadbStreaming = new AtomicBoolean();
|
||||
DB.findDto(DtoBasic.class, "select name from e_basic").findEachWhile(bean -> {
|
||||
if (!mariadbStreaming.get() && isMariaDbStreaming()) {
|
||||
mariadbStreaming.set(true);
|
||||
}
|
||||
return false;
|
||||
});
|
||||
assertThat(mariadbStreaming.get()).isTrue();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@ForPlatform(Platform.MARIADB)
|
||||
public void testStreamingOnDtoFindEachBatch() {
|
||||
|
||||
try (Transaction txn = DB.beginTransaction()) {
|
||||
AtomicBoolean mariadbStreaming = new AtomicBoolean();
|
||||
DB.findDto(DtoBasic.class, "select name from e_basic").findEach(2000, bean -> {
|
||||
if (!mariadbStreaming.get() && isMariaDbStreaming()) {
|
||||
mariadbStreaming.set(true);
|
||||
}
|
||||
});
|
||||
assertThat(mariadbStreaming.get()).isTrue();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Take a look into the current connection. We are streaming, if there is a result set.
|
||||
*/
|
||||
private boolean isMariaDbStreaming() {
|
||||
try {
|
||||
org.mariadb.jdbc.Connection conn = Transaction.current().connection().unwrap(org.mariadb.jdbc.Connection.class);
|
||||
org.mariadb.jdbc.client.impl.StandardClient client = (org.mariadb.jdbc.client.impl.StandardClient) conn.getClient();
|
||||
Field field = client.getClass().getDeclaredField("streamMsg");
|
||||
field.setAccessible(true);
|
||||
return field.get(client) != null;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -141,7 +141,11 @@ public class TestExecuteComplete extends BaseTestCase {
|
||||
cust.setName("Roland");
|
||||
DB.save(cust);
|
||||
|
||||
assertThat(getInScopeTransaction()).isNull();
|
||||
try {
|
||||
assertThat(getInScopeTransaction()).isNull();
|
||||
} finally {
|
||||
DB.delete(cust);
|
||||
}
|
||||
}
|
||||
|
||||
@ForPlatform(Platform.H2)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.tests.transaction;
|
||||
|
||||
import io.ebean.TxScope;
|
||||
import io.ebean.xtest.BaseTestCase;
|
||||
import io.ebean.DB;
|
||||
import io.ebean.Transaction;
|
||||
@@ -235,4 +236,19 @@ public class TestNestedTransaction extends BaseTestCase {
|
||||
}
|
||||
assertModified();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_txn_with_BatchMode() {
|
||||
|
||||
try (Transaction txn1 = DB.beginTransaction(TxScope.requiresNew())) {
|
||||
|
||||
try (Transaction txn2 = DB.beginTransaction()) {
|
||||
txn2.setBatchMode(true);
|
||||
txn2.commit();
|
||||
}
|
||||
// resume txn1
|
||||
assertThat(txn1.isBatchMode()).isFalse();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ delimiter $$
|
||||
--
|
||||
CREATE OR REPLACE PROCEDURE usp_ebean_drop_foreign_keys(IN table_name NVARCHAR(256), IN column_name NVARCHAR(256))
|
||||
AS
|
||||
-- play-ebean-start
|
||||
BEGIN
|
||||
DECLARE foreign_key_names TABLE(CONSTRAINT_NAME NVARCHAR(256), TABLE_NAME NVARCHAR(256));
|
||||
DECLARE i INT;
|
||||
@@ -17,6 +18,7 @@ EXEC 'ALTER TABLE "' || ESCAPE_DOUBLE_QUOTES(:foreign_key_names.TABLE_NAME[i]) |
|
||||
END FOR;
|
||||
|
||||
END;
|
||||
-- play-ebean-end
|
||||
$$
|
||||
|
||||
delimiter $$
|
||||
@@ -26,8 +28,10 @@ delimiter $$
|
||||
--
|
||||
CREATE OR REPLACE PROCEDURE usp_ebean_drop_column(IN table_name NVARCHAR(256), IN column_name NVARCHAR(256))
|
||||
AS
|
||||
-- play-ebean-start
|
||||
BEGIN
|
||||
CALL usp_ebean_drop_foreign_keys(table_name, column_name);
|
||||
EXEC 'ALTER TABLE "' || UPPER(ESCAPE_DOUBLE_QUOTES(table_name)) || '" DROP ("' || UPPER(ESCAPE_DOUBLE_QUOTES(column_name)) || '")';
|
||||
END;
|
||||
-- play-ebean-end
|
||||
$$
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-745347271, I__create_procs.sql
|
||||
1349158244, I__create_procs.sql
|
||||
-2017770851, 1.0__initial.sql
|
||||
-475843596, 1.1.sql
|
||||
1535221752, 1.2__dropsFor_1.1.sql
|
||||
|
||||
@@ -7,6 +7,7 @@ delimiter $$
|
||||
-- deletes all constraints and foreign keys referring to TABLE.COLUMN
|
||||
--
|
||||
CREATE PROCEDURE usp_ebean_drop_foreign_keys(IN p_table_name VARCHAR(255), IN p_column_name VARCHAR(255))
|
||||
-- play-ebean-start
|
||||
BEGIN
|
||||
DECLARE done INT DEFAULT FALSE;
|
||||
DECLARE c_fk_name CHAR(255);
|
||||
@@ -29,6 +30,7 @@ END LOOP;
|
||||
|
||||
CLOSE curs;
|
||||
END
|
||||
-- play-ebean-end
|
||||
$$
|
||||
|
||||
DROP PROCEDURE IF EXISTS usp_ebean_drop_column;
|
||||
@@ -39,10 +41,12 @@ delimiter $$
|
||||
-- deletes the column and ensures that all indices and constraints are dropped first
|
||||
--
|
||||
CREATE PROCEDURE usp_ebean_drop_column(IN p_table_name VARCHAR(255), IN p_column_name VARCHAR(255))
|
||||
-- play-ebean-start
|
||||
BEGIN
|
||||
CALL usp_ebean_drop_foreign_keys(p_table_name, p_column_name);
|
||||
SET @sql = CONCAT('ALTER TABLE `', p_table_name, '` DROP COLUMN `', p_column_name, '`');
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
END
|
||||
-- play-ebean-end
|
||||
$$
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
-1933396282, I__create_procs.sql
|
||||
-1617676189, I__create_procs.sql
|
||||
-2111548334, 1.0__initial.sql
|
||||
1085383251, 1.1.sql
|
||||
1187950993, 1.2__dropsFor_1.1.sql
|
||||
|
||||
@@ -7,6 +7,7 @@ delimiter $$
|
||||
-- deletes all constraints and foreign keys referring to TABLE.COLUMN
|
||||
--
|
||||
CREATE PROCEDURE usp_ebean_drop_foreign_keys(IN p_table_name VARCHAR(255), IN p_column_name VARCHAR(255))
|
||||
-- play-ebean-start
|
||||
BEGIN
|
||||
DECLARE done INT DEFAULT FALSE;
|
||||
DECLARE c_fk_name CHAR(255);
|
||||
@@ -29,6 +30,7 @@ END LOOP;
|
||||
|
||||
CLOSE curs;
|
||||
END
|
||||
-- play-ebean-end
|
||||
$$
|
||||
|
||||
DROP PROCEDURE IF EXISTS usp_ebean_drop_column;
|
||||
@@ -39,10 +41,12 @@ delimiter $$
|
||||
-- deletes the column and ensures that all indices and constraints are dropped first
|
||||
--
|
||||
CREATE PROCEDURE usp_ebean_drop_column(IN p_table_name VARCHAR(255), IN p_column_name VARCHAR(255))
|
||||
-- play-ebean-start
|
||||
BEGIN
|
||||
CALL usp_ebean_drop_foreign_keys(p_table_name, p_column_name);
|
||||
SET @sql = CONCAT('ALTER TABLE `', p_table_name, '` DROP COLUMN `', p_column_name, '`');
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
END
|
||||
-- play-ebean-end
|
||||
$$
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-1933396282, I__create_procs.sql
|
||||
-1617676189, I__create_procs.sql
|
||||
1980830787, 1.0__initial.sql
|
||||
-151422898, 1.1.sql
|
||||
-1097227916, 1.2__dropsFor_1.1.sql
|
||||
|
||||
@@ -7,6 +7,7 @@ delimiter $$
|
||||
-- deletes all constraints and foreign keys referring to TABLE.COLUMN
|
||||
--
|
||||
CREATE PROCEDURE usp_ebean_drop_foreign_keys(IN p_table_name VARCHAR(255), IN p_column_name VARCHAR(255))
|
||||
-- play-ebean-start
|
||||
BEGIN
|
||||
DECLARE done INT DEFAULT FALSE;
|
||||
DECLARE c_fk_name CHAR(255);
|
||||
@@ -29,6 +30,7 @@ END LOOP;
|
||||
|
||||
CLOSE curs;
|
||||
END
|
||||
-- play-ebean-end
|
||||
$$
|
||||
|
||||
DROP PROCEDURE IF EXISTS usp_ebean_drop_column;
|
||||
@@ -39,10 +41,12 @@ delimiter $$
|
||||
-- deletes the column and ensures that all indices and constraints are dropped first
|
||||
--
|
||||
CREATE PROCEDURE usp_ebean_drop_column(IN p_table_name VARCHAR(255), IN p_column_name VARCHAR(255))
|
||||
-- play-ebean-start
|
||||
BEGIN
|
||||
CALL usp_ebean_drop_foreign_keys(p_table_name, p_column_name);
|
||||
SET @sql = CONCAT('ALTER TABLE `', p_table_name, '` DROP COLUMN `', p_column_name, '`');
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
END
|
||||
-- play-ebean-end
|
||||
$$
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
-1933396282, I__create_procs.sql
|
||||
-1617676189, I__create_procs.sql
|
||||
369577572, 1.0__initial.sql
|
||||
-151422898, 1.1.sql
|
||||
-1097227916, 1.2__dropsFor_1.1.sql
|
||||
|
||||
@@ -198,6 +198,7 @@ alter table migtest_e_history6 add column if not exists sys_period tstzrange not
|
||||
create table migtest_e_history2_history(like migtest_e_history2);
|
||||
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
|
||||
create or replace function migtest_e_history2_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -213,6 +214,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history2_history_upd
|
||||
@@ -223,6 +225,7 @@ create trigger migtest_e_history2_history_upd
|
||||
create table migtest_e_history3_history(like migtest_e_history3);
|
||||
create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
|
||||
create or replace function migtest_e_history3_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -238,6 +241,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history3_history_upd
|
||||
@@ -248,6 +252,7 @@ create trigger migtest_e_history3_history_upd
|
||||
create table migtest_e_history4_history(like migtest_e_history4);
|
||||
create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
|
||||
create or replace function migtest_e_history4_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -263,6 +268,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history4_history_upd
|
||||
@@ -273,6 +279,7 @@ create trigger migtest_e_history4_history_upd
|
||||
create table migtest_e_history5_history(like migtest_e_history5);
|
||||
create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
|
||||
create or replace function migtest_e_history5_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -288,6 +295,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history5_history_upd
|
||||
@@ -298,6 +306,7 @@ create trigger migtest_e_history5_history_upd
|
||||
create table migtest_e_history6_history(like migtest_e_history6);
|
||||
create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
|
||||
create or replace function migtest_e_history6_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -313,6 +322,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history6_history_upd
|
||||
@@ -323,6 +333,7 @@ create trigger migtest_e_history6_history_upd
|
||||
create table table_history(like "table");
|
||||
create view table_with_history as select * from "table" union all select * from table_history;
|
||||
create or replace function table_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -338,6 +349,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger table_history_upd
|
||||
|
||||
@@ -255,6 +255,7 @@ alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique
|
||||
create table migtest_e_history_history(like migtest_e_history);
|
||||
create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history;
|
||||
create or replace function migtest_e_history_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -270,6 +271,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history_history_upd
|
||||
@@ -281,6 +283,7 @@ comment on column migtest_e_history.test_string is 'Column altered to long now';
|
||||
comment on table migtest_e_history is 'We have history now';
|
||||
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
|
||||
create or replace function migtest_e_history2_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -296,6 +299,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history2_history_upd
|
||||
@@ -304,6 +308,7 @@ create trigger migtest_e_history2_history_upd
|
||||
|
||||
create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
|
||||
create or replace function migtest_e_history3_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -319,6 +324,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history3_history_upd
|
||||
@@ -327,6 +333,7 @@ create trigger migtest_e_history3_history_upd
|
||||
|
||||
create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
|
||||
create or replace function migtest_e_history4_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -342,6 +349,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history4_history_upd
|
||||
@@ -350,6 +358,7 @@ create trigger migtest_e_history4_history_upd
|
||||
|
||||
create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
|
||||
create or replace function migtest_e_history5_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -365,6 +374,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history5_history_upd
|
||||
@@ -373,6 +383,7 @@ create trigger migtest_e_history5_history_upd
|
||||
|
||||
create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
|
||||
create or replace function migtest_e_history6_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -388,6 +399,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history6_history_upd
|
||||
@@ -397,6 +409,7 @@ create trigger migtest_e_history6_history_upd
|
||||
comment on column "table"."index" is 'this is an other comment';
|
||||
create view table_with_history as select * from "table" union all select * from table_history;
|
||||
create or replace function table_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -412,6 +425,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger table_history_upd
|
||||
|
||||
@@ -16,6 +16,7 @@ alter table migtest_e_history2_history drop column obsolete_string2;
|
||||
-- apply post alter
|
||||
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
|
||||
create or replace function migtest_e_history2_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -31,6 +32,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history2_history_upd
|
||||
|
||||
@@ -108,6 +108,7 @@ comment on column migtest_e_history.test_string is '';
|
||||
comment on table migtest_e_history is '';
|
||||
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
|
||||
create or replace function migtest_e_history2_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -123,6 +124,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history2_history_upd
|
||||
@@ -131,6 +133,7 @@ create trigger migtest_e_history2_history_upd
|
||||
|
||||
create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
|
||||
create or replace function migtest_e_history3_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -146,6 +149,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history3_history_upd
|
||||
@@ -154,6 +158,7 @@ create trigger migtest_e_history3_history_upd
|
||||
|
||||
create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
|
||||
create or replace function migtest_e_history4_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -169,6 +174,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history4_history_upd
|
||||
@@ -177,6 +183,7 @@ create trigger migtest_e_history4_history_upd
|
||||
|
||||
create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
|
||||
create or replace function migtest_e_history6_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -192,6 +199,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history6_history_upd
|
||||
|
||||
@@ -46,6 +46,7 @@ alter table table_history drop column textfield2;
|
||||
-- apply post alter
|
||||
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
|
||||
create or replace function migtest_e_history2_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -61,6 +62,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history2_history_upd
|
||||
@@ -69,6 +71,7 @@ create trigger migtest_e_history2_history_upd
|
||||
|
||||
create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
|
||||
create or replace function migtest_e_history5_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -84,6 +87,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history5_history_upd
|
||||
@@ -92,6 +96,7 @@ create trigger migtest_e_history5_history_upd
|
||||
|
||||
create view table_with_history as select * from "table" union all select * from table_history;
|
||||
create or replace function table_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -107,6 +112,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger table_history_upd
|
||||
|
||||
+5
-5
@@ -1,8 +1,8 @@
|
||||
1942370812, 1.0__initial.sql
|
||||
-1945546744, 1.1.sql
|
||||
-261111052, 1.2__dropsFor_1.1.sql
|
||||
-129523686, 1.3.sql
|
||||
1188958800, 1.4__dropsFor_1.3.sql
|
||||
-894233730, 1.0__initial.sql
|
||||
-1140732341, 1.1.sql
|
||||
-328303888, 1.2__dropsFor_1.1.sql
|
||||
-1783324840, 1.3.sql
|
||||
-1371008923, 1.4__dropsFor_1.3.sql
|
||||
783227075, R__multi_comments.sql
|
||||
561281075, R__order_views.sql
|
||||
283077354, R__pg_indexes.sql
|
||||
|
||||
@@ -198,6 +198,7 @@ alter table migtest_e_history6 add column if not exists sys_period tstzrange not
|
||||
create table migtest_e_history2_history(like migtest_e_history2);
|
||||
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
|
||||
create or replace function migtest_e_history2_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -213,6 +214,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history2_history_upd
|
||||
@@ -223,6 +225,7 @@ create trigger migtest_e_history2_history_upd
|
||||
create table migtest_e_history3_history(like migtest_e_history3);
|
||||
create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
|
||||
create or replace function migtest_e_history3_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -238,6 +241,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history3_history_upd
|
||||
@@ -248,6 +252,7 @@ create trigger migtest_e_history3_history_upd
|
||||
create table migtest_e_history4_history(like migtest_e_history4);
|
||||
create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
|
||||
create or replace function migtest_e_history4_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -263,6 +268,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history4_history_upd
|
||||
@@ -273,6 +279,7 @@ create trigger migtest_e_history4_history_upd
|
||||
create table migtest_e_history5_history(like migtest_e_history5);
|
||||
create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
|
||||
create or replace function migtest_e_history5_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -288,6 +295,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history5_history_upd
|
||||
@@ -298,6 +306,7 @@ create trigger migtest_e_history5_history_upd
|
||||
create table migtest_e_history6_history(like migtest_e_history6);
|
||||
create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
|
||||
create or replace function migtest_e_history6_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -313,6 +322,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history6_history_upd
|
||||
@@ -323,6 +333,7 @@ create trigger migtest_e_history6_history_upd
|
||||
create table table_history(like "table");
|
||||
create view table_with_history as select * from "table" union all select * from table_history;
|
||||
create or replace function table_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -338,6 +349,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger table_history_upd
|
||||
|
||||
@@ -255,6 +255,7 @@ alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique
|
||||
create table migtest_e_history_history(like migtest_e_history);
|
||||
create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history;
|
||||
create or replace function migtest_e_history_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -270,6 +271,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history_history_upd
|
||||
@@ -281,6 +283,7 @@ comment on column migtest_e_history.test_string is 'Column altered to long now';
|
||||
comment on table migtest_e_history is 'We have history now';
|
||||
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
|
||||
create or replace function migtest_e_history2_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -296,6 +299,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history2_history_upd
|
||||
@@ -304,6 +308,7 @@ create trigger migtest_e_history2_history_upd
|
||||
|
||||
create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
|
||||
create or replace function migtest_e_history3_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -319,6 +324,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history3_history_upd
|
||||
@@ -327,6 +333,7 @@ create trigger migtest_e_history3_history_upd
|
||||
|
||||
create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
|
||||
create or replace function migtest_e_history4_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -342,6 +349,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history4_history_upd
|
||||
@@ -350,6 +358,7 @@ create trigger migtest_e_history4_history_upd
|
||||
|
||||
create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
|
||||
create or replace function migtest_e_history5_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -365,6 +374,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history5_history_upd
|
||||
@@ -373,6 +383,7 @@ create trigger migtest_e_history5_history_upd
|
||||
|
||||
create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
|
||||
create or replace function migtest_e_history6_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -388,6 +399,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history6_history_upd
|
||||
@@ -397,6 +409,7 @@ create trigger migtest_e_history6_history_upd
|
||||
comment on column "table"."index" is 'this is an other comment';
|
||||
create view table_with_history as select * from "table" union all select * from table_history;
|
||||
create or replace function table_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -412,6 +425,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger table_history_upd
|
||||
|
||||
+2
@@ -16,6 +16,7 @@ alter table migtest_e_history2_history drop column obsolete_string2;
|
||||
-- apply post alter
|
||||
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
|
||||
create or replace function migtest_e_history2_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -31,6 +32,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history2_history_upd
|
||||
|
||||
@@ -108,6 +108,7 @@ comment on column migtest_e_history.test_string is '';
|
||||
comment on table migtest_e_history is '';
|
||||
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
|
||||
create or replace function migtest_e_history2_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -123,6 +124,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history2_history_upd
|
||||
@@ -131,6 +133,7 @@ create trigger migtest_e_history2_history_upd
|
||||
|
||||
create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
|
||||
create or replace function migtest_e_history3_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -146,6 +149,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history3_history_upd
|
||||
@@ -154,6 +158,7 @@ create trigger migtest_e_history3_history_upd
|
||||
|
||||
create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
|
||||
create or replace function migtest_e_history4_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -169,6 +174,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history4_history_upd
|
||||
@@ -177,6 +183,7 @@ create trigger migtest_e_history4_history_upd
|
||||
|
||||
create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
|
||||
create or replace function migtest_e_history6_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -192,6 +199,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history6_history_upd
|
||||
|
||||
+6
@@ -46,6 +46,7 @@ alter table table_history drop column textfield2;
|
||||
-- apply post alter
|
||||
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
|
||||
create or replace function migtest_e_history2_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -61,6 +62,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history2_history_upd
|
||||
@@ -69,6 +71,7 @@ create trigger migtest_e_history2_history_upd
|
||||
|
||||
create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
|
||||
create or replace function migtest_e_history5_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -84,6 +87,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history5_history_upd
|
||||
@@ -92,6 +96,7 @@ create trigger migtest_e_history5_history_upd
|
||||
|
||||
create view table_with_history as select * from "table" union all select * from table_history;
|
||||
create or replace function table_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -107,6 +112,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger table_history_upd
|
||||
|
||||
+5
-5
@@ -1,8 +1,8 @@
|
||||
-1015076364, 1.0__initial.sql
|
||||
-1624208025, 1.1.sql
|
||||
-261111052, 1.2__dropsFor_1.1.sql
|
||||
-1697064513, 1.3.sql
|
||||
1188958800, 1.4__dropsFor_1.3.sql
|
||||
424496268, 1.0__initial.sql
|
||||
1412926900, 1.1.sql
|
||||
-328303888, 1.2__dropsFor_1.1.sql
|
||||
533916041, 1.3.sql
|
||||
-1371008923, 1.4__dropsFor_1.3.sql
|
||||
783227075, R__multi_comments.sql
|
||||
561281075, R__order_views.sql
|
||||
283077354, R__pg_indexes.sql
|
||||
|
||||
+16
-4
@@ -21,7 +21,9 @@ GO
|
||||
-- deletes all indices referring to TABLE.COLUMN
|
||||
--
|
||||
CREATE OR ALTER PROCEDURE usp_ebean_drop_indices @tableName nvarchar(255), @columnName nvarchar(255)
|
||||
AS SET NOCOUNT ON
|
||||
AS
|
||||
-- play-ebean-start
|
||||
SET NOCOUNT ON
|
||||
declare @sql nvarchar(1000)
|
||||
declare @indexName nvarchar(255)
|
||||
BEGIN
|
||||
@@ -41,6 +43,7 @@ BEGIN
|
||||
CLOSE index_cursor;
|
||||
DEALLOCATE index_cursor;
|
||||
END
|
||||
-- play-ebean-end
|
||||
GO
|
||||
|
||||
--
|
||||
@@ -48,7 +51,9 @@ GO
|
||||
-- deletes the default constraint, which has a random name
|
||||
--
|
||||
CREATE OR ALTER PROCEDURE usp_ebean_drop_default_constraint @tableName nvarchar(255), @columnName nvarchar(255)
|
||||
AS SET NOCOUNT ON
|
||||
AS
|
||||
-- play-ebean-start
|
||||
SET NOCOUNT ON
|
||||
declare @tmp nvarchar(1000)
|
||||
BEGIN
|
||||
select @tmp = t1.name from sys.default_constraints t1
|
||||
@@ -57,6 +62,7 @@ BEGIN
|
||||
|
||||
if @tmp is not null EXEC('alter table [' + @tableName +'] drop constraint ' + @tmp);
|
||||
END
|
||||
-- play-ebean-end
|
||||
GO
|
||||
|
||||
--
|
||||
@@ -64,7 +70,9 @@ GO
|
||||
-- deletes constraints and foreign keys refering to TABLE.COLUMN
|
||||
--
|
||||
CREATE OR ALTER PROCEDURE usp_ebean_drop_constraints @tableName nvarchar(255), @columnName nvarchar(255)
|
||||
AS SET NOCOUNT ON
|
||||
AS
|
||||
-- play-ebean-start
|
||||
SET NOCOUNT ON
|
||||
declare @sql nvarchar(1000)
|
||||
declare @constraintName nvarchar(255)
|
||||
BEGIN
|
||||
@@ -90,6 +98,7 @@ BEGIN
|
||||
CLOSE name_cursor;
|
||||
DEALLOCATE name_cursor;
|
||||
END
|
||||
-- play-ebean-end
|
||||
GO
|
||||
|
||||
--
|
||||
@@ -97,7 +106,9 @@ GO
|
||||
-- deletes the column annd ensures that all indices and constraints are dropped first
|
||||
--
|
||||
CREATE OR ALTER PROCEDURE usp_ebean_drop_column @tableName nvarchar(255), @columnName nvarchar(255)
|
||||
AS SET NOCOUNT ON
|
||||
AS
|
||||
-- play-ebean-start
|
||||
SET NOCOUNT ON
|
||||
declare @sql nvarchar(1000)
|
||||
BEGIN
|
||||
EXEC usp_ebean_drop_indices @tableName, @columnName;
|
||||
@@ -107,4 +118,5 @@ BEGIN
|
||||
set @sql = 'alter table [' + @tableName + '] drop column [' + @columnName + ']';
|
||||
EXECUTE(@sql);
|
||||
END
|
||||
-- play-ebean-end
|
||||
GO
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
891357544, I__create_procs.sql
|
||||
1076122722, I__create_procs.sql
|
||||
-1455820494, 1.0__initial.sql
|
||||
-2020672101, 1.1.sql
|
||||
-1431095657, 1.2__dropsFor_1.1.sql
|
||||
|
||||
+16
-4
@@ -21,7 +21,9 @@ GO
|
||||
-- deletes all indices referring to TABLE.COLUMN
|
||||
--
|
||||
CREATE OR ALTER PROCEDURE usp_ebean_drop_indices @tableName nvarchar(255), @columnName nvarchar(255)
|
||||
AS SET NOCOUNT ON
|
||||
AS
|
||||
-- play-ebean-start
|
||||
SET NOCOUNT ON
|
||||
declare @sql nvarchar(1000)
|
||||
declare @indexName nvarchar(255)
|
||||
BEGIN
|
||||
@@ -41,6 +43,7 @@ BEGIN
|
||||
CLOSE index_cursor;
|
||||
DEALLOCATE index_cursor;
|
||||
END
|
||||
-- play-ebean-end
|
||||
GO
|
||||
|
||||
--
|
||||
@@ -48,7 +51,9 @@ GO
|
||||
-- deletes the default constraint, which has a random name
|
||||
--
|
||||
CREATE OR ALTER PROCEDURE usp_ebean_drop_default_constraint @tableName nvarchar(255), @columnName nvarchar(255)
|
||||
AS SET NOCOUNT ON
|
||||
AS
|
||||
-- play-ebean-start
|
||||
SET NOCOUNT ON
|
||||
declare @tmp nvarchar(1000)
|
||||
BEGIN
|
||||
select @tmp = t1.name from sys.default_constraints t1
|
||||
@@ -57,6 +62,7 @@ BEGIN
|
||||
|
||||
if @tmp is not null EXEC('alter table [' + @tableName +'] drop constraint ' + @tmp);
|
||||
END
|
||||
-- play-ebean-end
|
||||
GO
|
||||
|
||||
--
|
||||
@@ -64,7 +70,9 @@ GO
|
||||
-- deletes constraints and foreign keys refering to TABLE.COLUMN
|
||||
--
|
||||
CREATE OR ALTER PROCEDURE usp_ebean_drop_constraints @tableName nvarchar(255), @columnName nvarchar(255)
|
||||
AS SET NOCOUNT ON
|
||||
AS
|
||||
-- play-ebean-start
|
||||
SET NOCOUNT ON
|
||||
declare @sql nvarchar(1000)
|
||||
declare @constraintName nvarchar(255)
|
||||
BEGIN
|
||||
@@ -90,6 +98,7 @@ BEGIN
|
||||
CLOSE name_cursor;
|
||||
DEALLOCATE name_cursor;
|
||||
END
|
||||
-- play-ebean-end
|
||||
GO
|
||||
|
||||
--
|
||||
@@ -97,7 +106,9 @@ GO
|
||||
-- deletes the column annd ensures that all indices and constraints are dropped first
|
||||
--
|
||||
CREATE OR ALTER PROCEDURE usp_ebean_drop_column @tableName nvarchar(255), @columnName nvarchar(255)
|
||||
AS SET NOCOUNT ON
|
||||
AS
|
||||
-- play-ebean-start
|
||||
SET NOCOUNT ON
|
||||
declare @sql nvarchar(1000)
|
||||
BEGIN
|
||||
EXEC usp_ebean_drop_indices @tableName, @columnName;
|
||||
@@ -107,4 +118,5 @@ BEGIN
|
||||
set @sql = 'alter table [' + @tableName + '] drop column [' + @columnName + ']';
|
||||
EXECUTE(@sql);
|
||||
END
|
||||
-- play-ebean-end
|
||||
GO
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
891357544, I__create_procs.sql
|
||||
1076122722, I__create_procs.sql
|
||||
1574627056, 1.0__initial.sql
|
||||
1141454658, 1.1.sql
|
||||
-1431095657, 1.2__dropsFor_1.1.sql
|
||||
|
||||
@@ -204,6 +204,7 @@ create table migtest_e_history2_history(
|
||||
);
|
||||
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
|
||||
create or replace function migtest_e_history2_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -219,6 +220,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history2_history_upd
|
||||
@@ -233,6 +235,7 @@ create table migtest_e_history3_history(
|
||||
);
|
||||
create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
|
||||
create or replace function migtest_e_history3_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -248,6 +251,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history3_history_upd
|
||||
@@ -262,6 +266,7 @@ create table migtest_e_history4_history(
|
||||
);
|
||||
create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
|
||||
create or replace function migtest_e_history4_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -277,6 +282,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history4_history_upd
|
||||
@@ -291,6 +297,7 @@ create table migtest_e_history5_history(
|
||||
);
|
||||
create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
|
||||
create or replace function migtest_e_history5_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -306,6 +313,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history5_history_upd
|
||||
@@ -321,6 +329,7 @@ create table migtest_e_history6_history(
|
||||
);
|
||||
create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
|
||||
create or replace function migtest_e_history6_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -336,6 +345,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history6_history_upd
|
||||
@@ -354,6 +364,7 @@ create table table_history(
|
||||
);
|
||||
create view table_with_history as select * from "table" union all select * from table_history;
|
||||
create or replace function table_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -369,6 +380,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger table_history_upd
|
||||
|
||||
@@ -254,6 +254,7 @@ create table migtest_e_history_history(
|
||||
);
|
||||
create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history;
|
||||
create or replace function migtest_e_history_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -269,6 +270,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history_history_upd
|
||||
@@ -280,6 +282,7 @@ comment on column migtest_e_history.test_string is 'Column altered to long now';
|
||||
comment on table migtest_e_history is 'We have history now';
|
||||
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
|
||||
create or replace function migtest_e_history2_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -295,6 +298,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history2_history_upd
|
||||
@@ -303,6 +307,7 @@ create trigger migtest_e_history2_history_upd
|
||||
|
||||
create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
|
||||
create or replace function migtest_e_history3_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -318,6 +323,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history3_history_upd
|
||||
@@ -326,6 +332,7 @@ create trigger migtest_e_history3_history_upd
|
||||
|
||||
create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
|
||||
create or replace function migtest_e_history4_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -341,6 +348,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history4_history_upd
|
||||
@@ -349,6 +357,7 @@ create trigger migtest_e_history4_history_upd
|
||||
|
||||
create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
|
||||
create or replace function migtest_e_history5_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -364,6 +373,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history5_history_upd
|
||||
@@ -372,6 +382,7 @@ create trigger migtest_e_history5_history_upd
|
||||
|
||||
create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
|
||||
create or replace function migtest_e_history6_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -387,6 +398,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history6_history_upd
|
||||
@@ -396,6 +408,7 @@ create trigger migtest_e_history6_history_upd
|
||||
comment on column "table"."index" is 'this is an other comment';
|
||||
create view table_with_history as select * from "table" union all select * from table_history;
|
||||
create or replace function table_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -411,6 +424,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger table_history_upd
|
||||
|
||||
@@ -16,6 +16,7 @@ alter table migtest_e_history2_history drop column obsolete_string2;
|
||||
-- apply post alter
|
||||
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
|
||||
create or replace function migtest_e_history2_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -31,6 +32,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history2_history_upd
|
||||
|
||||
@@ -108,6 +108,7 @@ comment on column migtest_e_history.test_string is '';
|
||||
comment on table migtest_e_history is '';
|
||||
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
|
||||
create or replace function migtest_e_history2_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -123,6 +124,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history2_history_upd
|
||||
@@ -131,6 +133,7 @@ create trigger migtest_e_history2_history_upd
|
||||
|
||||
create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
|
||||
create or replace function migtest_e_history3_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -146,6 +149,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history3_history_upd
|
||||
@@ -154,6 +158,7 @@ create trigger migtest_e_history3_history_upd
|
||||
|
||||
create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
|
||||
create or replace function migtest_e_history4_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -169,6 +174,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history4_history_upd
|
||||
@@ -177,6 +183,7 @@ create trigger migtest_e_history4_history_upd
|
||||
|
||||
create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
|
||||
create or replace function migtest_e_history6_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -192,6 +199,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history6_history_upd
|
||||
|
||||
@@ -46,6 +46,7 @@ alter table table_history drop column textfield2;
|
||||
-- apply post alter
|
||||
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
|
||||
create or replace function migtest_e_history2_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -61,6 +62,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history2_history_upd
|
||||
@@ -69,6 +71,7 @@ create trigger migtest_e_history2_history_upd
|
||||
|
||||
create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
|
||||
create or replace function migtest_e_history5_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -84,6 +87,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger migtest_e_history5_history_upd
|
||||
@@ -92,6 +96,7 @@ create trigger migtest_e_history5_history_upd
|
||||
|
||||
create view table_with_history as select * from "table" union all select * from table_history;
|
||||
create or replace function table_history_version() returns trigger as $$
|
||||
-- play-ebean-start
|
||||
declare
|
||||
lowerTs timestamptz;
|
||||
upperTs timestamptz;
|
||||
@@ -107,6 +112,7 @@ begin
|
||||
return old;
|
||||
end if;
|
||||
end;
|
||||
-- play-ebean-end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
create trigger table_history_upd
|
||||
|
||||
+5
-5
@@ -1,7 +1,7 @@
|
||||
-1646972843, 1.0__initial.sql
|
||||
-698093883, 1.1.sql
|
||||
-261111052, 1.2__dropsFor_1.1.sql
|
||||
1532176380, 1.3.sql
|
||||
1188958800, 1.4__dropsFor_1.3.sql
|
||||
1940582862, 1.0__initial.sql
|
||||
300985805, 1.1.sql
|
||||
-328303888, 1.2__dropsFor_1.1.sql
|
||||
-2011077112, 1.3.sql
|
||||
-1371008923, 1.4__dropsFor_1.3.sql
|
||||
561281075, R__order_views.sql
|
||||
|
||||
|
||||
@@ -15,8 +15,8 @@ mvn -T 4 clean package
|
||||
mvn -T 4 deploy -pl '!composites,!platforms' -Pcentral -DskipTests -DskipStagingRepositoryClose=true -DstagingProgressTimeoutMinutes=9
|
||||
|
||||
## git commit, git tag, git push --tags
|
||||
git commit -am 'Version 14.8.0'
|
||||
git tag 14.8.0
|
||||
git commit -am 'Version 14.8.2'
|
||||
git tag 14.8.2
|
||||
git push --tags
|
||||
|
||||
## convert to javax
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>ebean-parent</artifactId>
|
||||
<groupId>io.ebean</groupId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
</parent>
|
||||
|
||||
<name>kotlin querybean generator</name>
|
||||
@@ -21,7 +21,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-querybean</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-core</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -56,14 +56,14 @@
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-platform-h2</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.ebean</groupId>
|
||||
<artifactId>ebean-ddl-generator</artifactId>
|
||||
<version>14.8.0</version>
|
||||
<version>14.8.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
+2
-4
@@ -11,6 +11,8 @@ interface Constants {
|
||||
String ENTITY = "jakarta.persistence.Entity";
|
||||
String EMBEDDABLE = "jakarta.persistence.Embeddable";
|
||||
String CONVERTER = "jakarta.persistence.Converter";
|
||||
String ONE_TO_MANY = "jakarta.persistence.OneToMany";
|
||||
String MANY_TO_MANY = "jakarta.persistence.ManyToMany";
|
||||
String EBEAN_COMPONENT = "io.ebean.annotation.EbeanComponent";
|
||||
|
||||
String DBARRAY = "io.ebean.annotation.DbArray";
|
||||
@@ -18,10 +20,6 @@ interface Constants {
|
||||
String DBJSONB = "io.ebean.annotation.DbJsonB";
|
||||
String DBNAME = "io.ebean.annotation.DbName";
|
||||
|
||||
String TQASSOC = "io.ebean.typequery.TQAssoc";
|
||||
String TQASSOCBEAN = "io.ebean.typequery.TQAssocBean";
|
||||
String TQPROPERTY = "io.ebean.typequery.TQProperty";
|
||||
|
||||
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";
|
||||
|
||||
+14
-64
@@ -1,9 +1,8 @@
|
||||
package io.ebean.querybean.generator;
|
||||
|
||||
class KotlinLangAdapter implements LangAdapter {
|
||||
final class KotlinLangAdapter {
|
||||
|
||||
@Override
|
||||
public void alias(Append writer, String shortName, String fullName) {
|
||||
void alias(Append writer, String shortName, String fullName) {
|
||||
writer.append(" companion object {").eol();
|
||||
writer.append(" /**").eol();
|
||||
writer.append(" * shared 'Alias' instance used to provide").eol();
|
||||
@@ -20,87 +19,38 @@ class KotlinLangAdapter implements LangAdapter {
|
||||
writer.append(" }").eol().eol();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void assocBeanConstructor(Append writer, String shortName) {
|
||||
writer.append(" constructor(name: String, root: R) : super(name, root)").eol();
|
||||
writer.eol();
|
||||
writer.append(" constructor(name: String, root: R, prefix: String) : super(name, root, prefix)").eol();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetch(Append writer, String origShortName) {
|
||||
writeAssocBeanFetch(writer, origShortName, "", "Eagerly fetch this association loading the specified properties.");
|
||||
writeAssocBeanFetch(writer, origShortName, "Query", "Eagerly fetch this association using a 'query join' loading the specified properties.");
|
||||
writeAssocBeanFetch(writer, origShortName, "Cache", "Eagerly fetch this association using L2 cache.");
|
||||
writeAssocBeanFetch(writer, origShortName, "Lazy", "Use lazy loading for this association loading the specified properties.");
|
||||
}
|
||||
|
||||
private void writeAssocBeanFetch(Append writer, String origShortName, String fetchType, String comment) {
|
||||
// fun fetch(vararg properties: TQProperty<QContact,?>): R {
|
||||
// return fetchProperties(*properties)
|
||||
// }
|
||||
writer.append(" /**").eol();
|
||||
writer.append(" * ").append(comment).eol();
|
||||
writer.append(" */").eol();
|
||||
writer.append(" fun fetch%s(vararg properties: TQProperty<Q%s,Any>) : R {", fetchType, origShortName).eol();
|
||||
writer.append(" return fetch%sProperties(*properties)", fetchType).eol();
|
||||
writer.append(" }").eol();
|
||||
writer.eol();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rootBeanConstructor(Append writer, String shortName, String dbName, String fullName) {
|
||||
void rootBeanConstructor(Append writer, String shortName, String dbName, String fullName) {
|
||||
String name = (dbName == null) ? "default" : dbName;
|
||||
writer.append(" /**").eol();
|
||||
writer.append(" * Construct using the %s Database.", name).eol();
|
||||
writer.append(" */").eol();
|
||||
writer.append(" /** Construct using the %s Database. */", name).eol();
|
||||
if (dbName == null) {
|
||||
writer.append(" constructor() : super(%s::class.java)", fullName).eol().eol();
|
||||
} else {
|
||||
writer.append(" constructor() : super(%s::class.java, io.ebean.DB.byName(\"%s\"))", fullName, dbName).eol().eol();
|
||||
}
|
||||
|
||||
writer.append(" /**").eol();
|
||||
writer.append(" * @deprecated migrate to query.usingTransaction()", name).eol();
|
||||
writer.append(" */").eol();
|
||||
writer.append(" @Deprecated(message=\"migrate to query.usingTransaction()\")").eol();
|
||||
writer.append(" /** @deprecated migrate to query.usingTransaction() */", name).eol();
|
||||
writer.append(" @Deprecated(message=\"migrate to query.usingTransaction()\")").eol();
|
||||
if (dbName == null) {
|
||||
writer.append(" constructor(transaction: io.ebean.Transaction) : super(%s::class.java, transaction)", fullName).eol().eol();
|
||||
} else {
|
||||
writer.append(" constructor(transaction: io.ebean.Transaction) : super(%s::class.java, io.ebean.DB.byName(\"%s\"), transaction)", fullName, dbName).eol().eol();
|
||||
}
|
||||
|
||||
writer.eol();
|
||||
writer.append(" /**").eol();
|
||||
writer.append(" * Construct with a given Database.").eol();
|
||||
writer.append(" */").eol();
|
||||
writer.append(" /** Construct with a given Database. */").eol();
|
||||
writer.append(" constructor(database: io.ebean.Database) : super(%s::class.java, database)", fullName).eol().eol();
|
||||
|
||||
writer.append(" /**").eol();
|
||||
writer.append(" * Construct for Alias.").eol();
|
||||
writer.append(" */").eol();
|
||||
writer.append(" /** Construct for Alias. */").eol();
|
||||
writer.append(" private constructor(dummy: Boolean) : super(dummy)").eol().eol();
|
||||
|
||||
writer.append(" /**").eol();
|
||||
writer.append(" * Private constructor for FetchGroup building.").eol();
|
||||
writer.append(" */").eol();
|
||||
writer.append(" private constructor(fetchGroupQuery: io.ebean.Query<%s>) : super(fetchGroupQuery)", fullName).eol();
|
||||
writer.append(" /** Private constructor for FetchGroup building. */").eol();
|
||||
writer.append(" private constructor(fetchGroupQuery: io.ebean.Query<%s>) : super(fetchGroupQuery)", fullName).eol().eol();
|
||||
|
||||
writer.append(" /** Private constructor for filterMany */").eol();
|
||||
writer.append(" private constructor(filter: io.ebean.ExpressionList<%s>) : super(filter)", fullName).eol().eol();
|
||||
|
||||
writer.eol();
|
||||
writer.append(" /** Return a copy of the query. */").eol();
|
||||
writer.append(" override fun copy() : Q%s {", shortName).eol();
|
||||
writer.append(" return Q%s(query().copy())", shortName).eol();
|
||||
writer.append(" }").eol();
|
||||
writer.eol();
|
||||
writer.append(" }").eol().eol();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fieldDefn(Append writer, String propertyName, String typeDefn) {
|
||||
writer.append(" lateinit var %s: ", propertyName);
|
||||
if (typeDefn.endsWith(",Integer>")) {
|
||||
typeDefn = typeDefn.replace(",Integer>", ",Int>");
|
||||
}
|
||||
writer.append(typeDefn);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
package io.ebean.querybean.generator;
|
||||
|
||||
public interface LangAdapter {
|
||||
|
||||
|
||||
void alias(Append writer, String shortName, String beanFullName);
|
||||
|
||||
void rootBeanConstructor(Append writer, String shortName, String dbName, String beanFullName);
|
||||
|
||||
void assocBeanConstructor(Append writer, String shortName);
|
||||
|
||||
void fetch(Append writer, String origShortName);
|
||||
|
||||
void fieldDefn(Append writer, String propertyName, String typeDefn);
|
||||
|
||||
}
|
||||
+57
-30
@@ -239,6 +239,10 @@ class ProcessingContext implements Constants {
|
||||
return hasAnnotations(element, EMBEDDABLE);
|
||||
}
|
||||
|
||||
private static boolean dbToMany(Element field) {
|
||||
return hasAnnotations(field, ONE_TO_MANY, MANY_TO_MANY);
|
||||
}
|
||||
|
||||
/**
|
||||
* Find the DbName annotation and return name if found.
|
||||
*/
|
||||
@@ -261,6 +265,7 @@ class ProcessingContext implements Constants {
|
||||
}
|
||||
|
||||
PropertyType getPropertyType(VariableElement field) {
|
||||
boolean toMany = dbToMany(field);
|
||||
if (dbJsonField(field)) {
|
||||
return propertyTypeMap.getDbJsonType();
|
||||
}
|
||||
@@ -301,36 +306,30 @@ class ProcessingContext implements Constants {
|
||||
if (targetEntity != null) {
|
||||
final TypeElement element = elementUtils.getTypeElement(targetEntity);
|
||||
if (isEntityOrEmbedded(element)) {
|
||||
return createPropertyTypeAssoc(typeDef(element.asType()));
|
||||
boolean embeddable = isEmbeddable(element);
|
||||
return createPropertyTypeAssoc(embeddable, toMany, typeDef(element.asType()));
|
||||
}
|
||||
}
|
||||
if (isEntityOrEmbedded(fieldType)) {
|
||||
// public QAssocContact<QCustomer> contacts;
|
||||
return createPropertyTypeAssoc(typeDef(typeMirror));
|
||||
boolean embeddable = isEmbeddable(fieldType);
|
||||
return createPropertyTypeAssoc(embeddable, toMany, typeDef(typeMirror));
|
||||
}
|
||||
|
||||
final PropertyType result;
|
||||
if (typeMirror.getKind() == TypeKind.DECLARED) {
|
||||
DeclaredType declaredType = (DeclaredType) typeMirror;
|
||||
List<? extends TypeMirror> typeArguments = declaredType.getTypeArguments();
|
||||
if (typeArguments.size() == 1) {
|
||||
TypeMirror argType = typeArguments.get(0);
|
||||
Element argElement = asElement(argType);
|
||||
if (isEntityOrEmbedded(argElement)) {
|
||||
return createPropertyTypeAssoc(typeDef(argElement.asType()));
|
||||
}
|
||||
} else if (typeArguments.size() == 2) {
|
||||
TypeMirror argType = typeArguments.get(1);
|
||||
Element argElement = asElement(argType);
|
||||
if (isEntityOrEmbedded(argElement)) {
|
||||
return createPropertyTypeAssoc(typeDef(argElement.asType()));
|
||||
}
|
||||
}
|
||||
result = createManyTypeAssoc(field, (DeclaredType) typeMirror);
|
||||
} else {
|
||||
result = null;
|
||||
}
|
||||
|
||||
if (typeInstanceOf(typeMirror, "java.lang.Comparable")) {
|
||||
return new PropertyTypeScalarComparable(trimAnnotations(typeMirror.toString()));
|
||||
if (result != null) {
|
||||
return result;
|
||||
} else {
|
||||
return new PropertyTypeScalar(trimAnnotations(typeMirror.toString()));
|
||||
if (typeInstanceOf(typeMirror, "java.lang.Comparable")) {
|
||||
return new PropertyTypeScalarComparable(trimAnnotations(typeMirror.toString()));
|
||||
} else {
|
||||
return new PropertyTypeScalar(trimAnnotations(typeMirror.toString()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -357,6 +356,25 @@ class ProcessingContext implements Constants {
|
||||
.anyMatch(t -> typeInstanceOf(t, desiredInterface));
|
||||
}
|
||||
|
||||
private PropertyType createManyTypeAssoc(VariableElement field, DeclaredType declaredType) {
|
||||
boolean toMany = dbToMany(field);
|
||||
List<? extends TypeMirror> typeArguments = declaredType.getTypeArguments();
|
||||
if (typeArguments.size() == 1) {
|
||||
Element argElement = typeUtils.asElement(typeArguments.get(0));
|
||||
if (isEntityOrEmbedded(argElement)) {
|
||||
boolean embeddable = isEmbeddable(argElement);
|
||||
return createPropertyTypeAssoc(embeddable, toMany, typeDef(argElement.asType()));
|
||||
}
|
||||
} else if (typeArguments.size() == 2) {
|
||||
Element argElement = typeUtils.asElement(typeArguments.get(1));
|
||||
if (isEntityOrEmbedded(argElement)) {
|
||||
boolean embeddable = isEmbeddable(argElement);
|
||||
return createPropertyTypeAssoc(embeddable, toMany, typeDef(argElement.asType()));
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private String readTargetEntity(Element declaredType) {
|
||||
for (AnnotationMirror annotation : declaredType.getAnnotationMirrors()) {
|
||||
final Object targetEntity = readTargetEntityFromAnnotation(annotation);
|
||||
@@ -386,11 +404,20 @@ class ProcessingContext implements Constants {
|
||||
/**
|
||||
* Create the QAssoc PropertyType.
|
||||
*/
|
||||
private PropertyType createPropertyTypeAssoc(String fullName) {
|
||||
String[] split = Split.split(fullName);
|
||||
String propertyName = "QAssoc" + split[1];
|
||||
String packageName = packageAppend(split[0]);
|
||||
return new PropertyTypeAssoc(propertyName, packageName);
|
||||
private PropertyType createPropertyTypeAssoc(boolean embeddable, boolean toMany, String fullName) {
|
||||
TypeElement typeElement = elementUtils.getTypeElement(fullName);
|
||||
String type;
|
||||
if (typeElement.getNestingKind().isNested()) {
|
||||
type = typeElement.getEnclosingElement().toString() + "$" + typeElement.getSimpleName();
|
||||
} else {
|
||||
type = typeElement.getQualifiedName().toString();
|
||||
}
|
||||
|
||||
String suffix = toMany ? "Many" : embeddable ? "": "One";
|
||||
String[] split = Split.split(type);
|
||||
String propertyName = "Q" + split[1] + ".Assoc" + suffix;
|
||||
String importName = split[0] + ".query.Q" + split[1];
|
||||
return new PropertyTypeAssoc(propertyName, importName);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -415,9 +442,10 @@ class ProcessingContext implements Constants {
|
||||
messager.printMessage(Diagnostic.Kind.ERROR, String.format(msg, args), e);
|
||||
}
|
||||
|
||||
/**
|
||||
* Log a info message.
|
||||
*/
|
||||
void logWarn(String msg, Object... args) {
|
||||
messager.printMessage(Diagnostic.Kind.WARNING, String.format(msg, args));
|
||||
}
|
||||
|
||||
void logNote(String msg, Object... args) {
|
||||
messager.printMessage(Diagnostic.Kind.NOTE, String.format(msg, args));
|
||||
}
|
||||
@@ -559,7 +587,6 @@ class ProcessingContext implements Constants {
|
||||
} catch (FilerException e) {
|
||||
logNote(null, "FilerException reading services file: " + e.getMessage());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
logError(null, "Error reading services file: " + e.getMessage());
|
||||
}
|
||||
return null;
|
||||
|
||||
+5
-22
@@ -1,6 +1,7 @@
|
||||
package io.ebean.querybean.generator;
|
||||
|
||||
import javax.annotation.processing.AbstractProcessor;
|
||||
import javax.annotation.processing.FilerException;
|
||||
import javax.annotation.processing.ProcessingEnvironment;
|
||||
import javax.annotation.processing.RoundEnvironment;
|
||||
import javax.lang.model.SourceVersion;
|
||||
@@ -19,14 +20,12 @@ public class Processor extends AbstractProcessor implements Constants {
|
||||
private static final String KAPT_KOTLIN_GENERATED_OPTION = "kapt.kotlin.generated";
|
||||
|
||||
private ProcessingContext processingContext;
|
||||
private SimpleModuleInfoWriter moduleWriter;
|
||||
|
||||
public Processor() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> getSupportedOptions() {
|
||||
|
||||
Set<String> options = new LinkedHashSet<>();
|
||||
options.add(KAPT_KOTLIN_GENERATED_OPTION);
|
||||
options.add(GENERATE_KOTLIN_CODE_OPTION);
|
||||
@@ -61,7 +60,6 @@ public class Processor extends AbstractProcessor implements Constants {
|
||||
int count = processEntities(roundEnv);
|
||||
processOthers(roundEnv);
|
||||
final int loaded = processingContext.complete();
|
||||
initModuleInfoBean();
|
||||
if (roundEnv.processingOver()) {
|
||||
writeModuleInfoBean();
|
||||
}
|
||||
@@ -98,26 +96,12 @@ public class Processor extends AbstractProcessor implements Constants {
|
||||
}
|
||||
}
|
||||
|
||||
private void initModuleInfoBean() {
|
||||
try {
|
||||
if (moduleWriter == null) {
|
||||
moduleWriter = new SimpleModuleInfoWriter(processingContext);
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
processingContext.logError(null, "Failed to initialise EntityClassRegister error:" + e + " stack:" + Arrays.toString(e.getStackTrace()));
|
||||
}
|
||||
}
|
||||
|
||||
private void writeModuleInfoBean() {
|
||||
try {
|
||||
if (moduleWriter == null) {
|
||||
processingContext.logError(null, "EntityClassRegister was not initialised and not written");
|
||||
} else {
|
||||
moduleWriter.write();
|
||||
}
|
||||
new SimpleModuleInfoWriter(processingContext).write();
|
||||
} catch (FilerException e) {
|
||||
processingContext.logWarn(null, "FilerException trying to write EntityClassRegister: " + e);
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
processingContext.logError(null, "Failed to write EntityClassRegister error:" + e + " stack:" + Arrays.toString(e.getStackTrace()));
|
||||
}
|
||||
}
|
||||
@@ -125,8 +109,7 @@ public class Processor extends AbstractProcessor implements Constants {
|
||||
private void generateQueryBeans(Element element) {
|
||||
try {
|
||||
SimpleQueryBeanWriter beanWriter = new SimpleQueryBeanWriter((TypeElement) element, processingContext);
|
||||
beanWriter.writeRootBean();
|
||||
beanWriter.writeAssocBean();
|
||||
beanWriter.writeBean();
|
||||
} catch (Throwable e) {
|
||||
processingContext.logError(element, "Error generating query beans: " + e);
|
||||
}
|
||||
|
||||
+4
-13
@@ -7,25 +7,16 @@ import java.util.Set;
|
||||
*/
|
||||
class PropertyTypeAssoc extends PropertyType {
|
||||
|
||||
/**
|
||||
* The package name for this associated query bean.
|
||||
*/
|
||||
private final String assocPackage;
|
||||
private final String importName;
|
||||
|
||||
/**
|
||||
* Construct given the associated bean type name and package.
|
||||
*
|
||||
* @param qAssocTypeName the associated bean type name.
|
||||
* @param assocPackage the associated bean package.
|
||||
*/
|
||||
PropertyTypeAssoc(String qAssocTypeName, String assocPackage) {
|
||||
PropertyTypeAssoc(String qAssocTypeName, String importName) {
|
||||
super(qAssocTypeName);
|
||||
this.assocPackage = assocPackage;
|
||||
this.importName = importName;
|
||||
}
|
||||
|
||||
@Override
|
||||
void addImports(Set<String> allImports) {
|
||||
allImports.add(assocPackage + "." + propertyType);
|
||||
allImports.add(importName);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
-2
@@ -50,7 +50,6 @@ class SimpleModuleInfoWriter {
|
||||
}
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
processingContext.logError(null, "Failed to write services file " + e.getMessage());
|
||||
}
|
||||
}
|
||||
@@ -70,7 +69,6 @@ class SimpleModuleInfoWriter {
|
||||
}
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
processingContext.logError(null, "Failed to write services file " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
+87
-123
@@ -12,7 +12,6 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
@@ -74,19 +73,17 @@ class SimpleQueryBeanWriter {
|
||||
private final boolean embeddable;
|
||||
private final String dbName;
|
||||
private final String beanFullName;
|
||||
private final LangAdapter langAdapter;
|
||||
private boolean writingAssocBean;
|
||||
private final KotlinLangAdapter langAdapter = new KotlinLangAdapter();
|
||||
private boolean writingEmbeddedBean;
|
||||
private final String generatedSourcesDir;
|
||||
|
||||
private String destPackage;
|
||||
private String origDestPackage;
|
||||
private String shortName;
|
||||
private final String shortInnerName;
|
||||
private final String origShortName;
|
||||
private Append writer;
|
||||
|
||||
SimpleQueryBeanWriter(TypeElement element, ProcessingContext processingContext) {
|
||||
this.langAdapter = new KotlinLangAdapter();
|
||||
this.generatedSourcesDir = processingContext.generatedSourcesDir();
|
||||
this.element = element;
|
||||
this.processingContext = processingContext;
|
||||
@@ -95,7 +92,7 @@ class SimpleQueryBeanWriter {
|
||||
this.destPackage = Util.packageOf(nested, beanFullName) + ".query";
|
||||
String sn = Util.shortName(nested, beanFullName);
|
||||
this.shortInnerName = Util.shortName(false, sn);
|
||||
this.shortName = sn.replace(".", "");
|
||||
this.shortName = sn.replace(".", "_"); // $ not supported with Kotlin, see kotlinInnerType()
|
||||
this.origShortName = shortName;
|
||||
this.isEntity = processingContext.isEntity(element);
|
||||
this.embeddable = processingContext.isEmbeddable(element);
|
||||
@@ -118,8 +115,8 @@ class SimpleQueryBeanWriter {
|
||||
return processingContext.findDbName(element);
|
||||
}
|
||||
|
||||
private LangAdapter lang() {
|
||||
return langAdapter;
|
||||
private static String kotlinInnerType(String fullType) {
|
||||
return fullType.replace('$', '_');
|
||||
}
|
||||
|
||||
private void gatherPropertyDetails() {
|
||||
@@ -148,25 +145,24 @@ class SimpleQueryBeanWriter {
|
||||
}
|
||||
|
||||
/**
|
||||
* Write the type query bean (root bean).
|
||||
* Write the type query bean.
|
||||
*/
|
||||
void writeRootBean() throws IOException {
|
||||
void writeBean() throws IOException {
|
||||
gatherPropertyDetails();
|
||||
translateKotlinImportTypes();
|
||||
if (isEmbeddable()) {
|
||||
processingContext.addEntity(beanFullName, dbName);
|
||||
writeEmbeddedBean();
|
||||
} else if (isEntity()) {
|
||||
processingContext.addEntity(beanFullName, dbName);
|
||||
writer = new Append(createFileWriter());
|
||||
|
||||
translateKotlinImportTypes();
|
||||
|
||||
writePackage();
|
||||
writeImports();
|
||||
writeClass();
|
||||
writeAlias();
|
||||
writeFields();
|
||||
writeFields(false);
|
||||
writeConstructors();
|
||||
//writeStaticAliasClass();
|
||||
writeClassEnd();
|
||||
|
||||
writer.close();
|
||||
@@ -196,139 +192,53 @@ class SimpleQueryBeanWriter {
|
||||
/**
|
||||
* Write the type query assoc bean.
|
||||
*/
|
||||
void writeAssocBean() throws IOException {
|
||||
writingAssocBean = true;
|
||||
origDestPackage = destPackage;
|
||||
destPackage = destPackage + ".assoc";
|
||||
shortName = "Assoc" + shortName;
|
||||
void writeEmbeddedBean() throws IOException {
|
||||
writingEmbeddedBean = true;
|
||||
|
||||
prepareAssocBeanImports();
|
||||
writer = new Append(createFileWriter());
|
||||
|
||||
writePackage();
|
||||
writeImports();
|
||||
writeClass();
|
||||
writeFields();
|
||||
writeConstructors();
|
||||
writeEmbeddedAssoc();
|
||||
writeClassEnd();
|
||||
|
||||
writer.close();
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare the imports for writing assoc bean.
|
||||
*/
|
||||
private void prepareAssocBeanImports() {
|
||||
if (embeddable) {
|
||||
importTypes.add(Constants.TQASSOC);
|
||||
} else {
|
||||
importTypes.add(Constants.TQASSOCBEAN);
|
||||
}
|
||||
if (isEntity()) {
|
||||
importTypes.add(Constants.TQPROPERTY);
|
||||
importTypes.add(origDestPackage + ".Q" + origShortName);
|
||||
//if (implementsInterface != null) {
|
||||
// importTypes.add(Constants.AVAJE_LANG_NULLABLE);
|
||||
// importTypes.add(Constants.JAVA_COLLECTION);
|
||||
// importTypes.add(implementsInterfaceFullName);
|
||||
//}
|
||||
}
|
||||
|
||||
// remove imports for the same package
|
||||
Iterator<String> importsIterator = importTypes.iterator();
|
||||
String checkImportStart = destPackage + ".QAssoc";
|
||||
while (importsIterator.hasNext()) {
|
||||
String importType = importsIterator.next();
|
||||
if (importType.startsWith(checkImportStart)) {
|
||||
importsIterator.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Write constructors.
|
||||
*/
|
||||
private void writeConstructors() {
|
||||
if (writingAssocBean) {
|
||||
writeAssocBeanFetch();
|
||||
writeAssocBeanConstructor();
|
||||
} else {
|
||||
writeRootBeanConstructor();
|
||||
}
|
||||
langAdapter.rootBeanConstructor(writer, shortName, dbName, beanFullName);
|
||||
writeAssocClasses();
|
||||
}
|
||||
|
||||
/**
|
||||
* Write the constructors for 'root' type query bean.
|
||||
*/
|
||||
private void writeRootBeanConstructor() {
|
||||
lang().rootBeanConstructor(writer, shortName, dbName, beanFullName);
|
||||
}
|
||||
|
||||
private void writeAssocBeanFetch() {
|
||||
if (isEntity()) {
|
||||
//if (implementsInterface != null) {
|
||||
// writeAssocBeanExpression(false, "eq", "Is equal to by ID property.");
|
||||
// writeAssocBeanExpression(true, "eqIfPresent", "Is equal to by ID property if the value is not null, if null no expression is added.");
|
||||
// writeAssocBeanExpression(false, "in", "IN the given values.", implementsInterfaceShortName + "...", "in");
|
||||
// writeAssocBeanExpression(false, "inBy", "IN the given interface values.", "Collection<" + implementsInterfaceShortName + ">", "in");
|
||||
// writeAssocBeanExpression(true, "inOrEmptyBy", "IN the given interface values if the collection is not empty. No expression is added if the collection is empty..", "Collection<" + implementsInterfaceShortName + ">", "inOrEmpty");
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
private void writeAssocBeanExpression(boolean nullable,String expression, String comment) {
|
||||
writeAssocBeanExpression(nullable, expression, comment, implementsInterfaceShortName, expression);
|
||||
}
|
||||
|
||||
private void writeAssocBeanExpression(boolean nullable, String expression, String comment, String param, String actualExpression) {
|
||||
final String nullableAnnotation = nullable ? "@Nullable " : "";
|
||||
String values = expression.startsWith("in") ? "values" : "value";
|
||||
writer.append(" /**").eol();
|
||||
writer.append(" * ").append(comment).eol();
|
||||
writer.append(" */").eol();
|
||||
writer.append(" fun %s(%s%s %s): R {", expression, nullableAnnotation, param, values).eol();
|
||||
writer.append(" expr().%s(_name, %s);", actualExpression, values).eol();
|
||||
writer.append(" return _root;").eol();
|
||||
writer.append(" }").eol();
|
||||
writer.eol();
|
||||
}
|
||||
|
||||
/**
|
||||
* Write constructor for 'assoc' type query bean.
|
||||
*/
|
||||
private void writeAssocBeanConstructor() {
|
||||
lang().assocBeanConstructor(writer, shortName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write all the fields.
|
||||
*/
|
||||
private void writeFields() {
|
||||
private void writeFields(boolean assocBeans) {
|
||||
String padding = assocBeans ? " " : "";
|
||||
for (PropertyMeta property : properties) {
|
||||
String typeDefn = property.getTypeDefn(shortName, writingAssocBean);
|
||||
lang().fieldDefn(writer, property.getName(), typeDefn);
|
||||
writer.eol();
|
||||
String typeDefn = kotlinTypeDefn(property.getTypeDefn(shortName, assocBeans));
|
||||
writer.append("%s lateinit var %s: %s", padding, property.getName(), kotlinInnerType(typeDefn)).eol();
|
||||
}
|
||||
writer.eol();
|
||||
}
|
||||
|
||||
private static String kotlinTypeDefn(String type) {
|
||||
if (type.endsWith(",Integer>")) {
|
||||
return type.replace(",Integer>", ",Int>");
|
||||
} else {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Write the class definition.
|
||||
*/
|
||||
private void writeClass() {
|
||||
if (writingAssocBean) {
|
||||
if (writingEmbeddedBean) {
|
||||
writer.append("/**").eol();
|
||||
writer.append(" * Association query bean for %s.", shortName).eol();
|
||||
writer.append(" * ").eol();
|
||||
writer.append(" * THIS IS A GENERATED OBJECT, DO NOT MODIFY THIS CLASS.").eol();
|
||||
writer.append(" */").eol();
|
||||
writer.append(Constants.AT_GENERATED).eol();
|
||||
writer.append(Constants.AT_TYPEQUERYBEAN).eol();
|
||||
if (embeddable) {
|
||||
writer.append("class Q%s<R> : TQAssoc<%s,R> {", shortName, beanFullName).eol();
|
||||
} else {
|
||||
writer.append("class Q%s<R> : TQAssocBean<%s,R,Q%s> {", shortName, beanFullName, origShortName).eol();
|
||||
}
|
||||
writer.append("class Q%s {", shortName).eol();
|
||||
} else {
|
||||
writer.append("/**").eol();
|
||||
writer.append(" * Query bean for %s.", shortName).eol();
|
||||
@@ -344,9 +254,7 @@ class SimpleQueryBeanWriter {
|
||||
}
|
||||
|
||||
private void writeAlias() {
|
||||
if (!writingAssocBean) {
|
||||
lang().alias(writer, shortName, beanFullName);
|
||||
}
|
||||
langAdapter.alias(writer, shortName, beanFullName);
|
||||
}
|
||||
|
||||
private void writeClassEnd() {
|
||||
@@ -358,7 +266,7 @@ class SimpleQueryBeanWriter {
|
||||
*/
|
||||
private void writeImports() {
|
||||
for (String importType : importTypes) {
|
||||
writer.append("import %s;", importType).eol();
|
||||
writer.append("import %s;", kotlinInnerType(importType)).eol();
|
||||
}
|
||||
writer.eol();
|
||||
}
|
||||
@@ -379,4 +287,60 @@ class SimpleQueryBeanWriter {
|
||||
return new FileWriter(absFile);
|
||||
}
|
||||
|
||||
private void writeEmbeddedAssoc() {
|
||||
writer.append(" @io.ebean.typequery.Generated(\"io.ebean.querybean.generator\") @io.ebean.typequery.TypeQueryBean(\"v1\")").eol();
|
||||
writer.append(" class Assoc<R> : io.ebean.typequery.TQAssoc<%s,R> {", beanFullName).eol().eol();
|
||||
writeFields(true);
|
||||
writer.append(" protected constructor(name: String, root: R) : super(name, root)").eol();
|
||||
writer.append(" protected constructor(name: String, root: R, prefix: String) : super(name, root, prefix)").eol();
|
||||
writer.append(" }").eol().eol();
|
||||
}
|
||||
|
||||
private void writeAssocClasses() {
|
||||
writer.append(" @io.ebean.typequery.Generated(\"io.ebean.querybean.generator\") @io.ebean.typequery.TypeQueryBean(\"v1\")").eol();
|
||||
writer.append(" abstract class Assoc<R> : io.ebean.typequery.TQAssocBean<%s, R, Q%s> {", beanFullName, shortName).eol();
|
||||
|
||||
writeFields(true);
|
||||
writer.append(" protected constructor(name: String, root: R) : super(name, root)").eol();
|
||||
writer.append(" protected constructor(name: String, root: R, prefix: String) : super(name, root, prefix)").eol();
|
||||
writer.append(" }").eol().eol();
|
||||
|
||||
writer.append(" @io.ebean.typequery.Generated(\"io.ebean.querybean.generator\") @io.ebean.typequery.TypeQueryBean(\"v1\")").eol();
|
||||
writer.append(" class AssocOne<R> : Assoc<R> {").eol();
|
||||
writer.append(" constructor(name: String, root: R) : super(name, root)").eol();
|
||||
writer.append(" constructor(name: String, root: R, prefix: String) : super(name, root, prefix)").eol();
|
||||
writer.append(" }").eol().eol();
|
||||
|
||||
writer.append(" @io.ebean.typequery.Generated(\"io.ebean.querybean.generator\") @io.ebean.typequery.TypeQueryBean(\"v1\")").eol();
|
||||
writer.append(" class AssocMany<R> : Assoc<R>, io.ebean.typequery.TQAssocMany<%s, R, Q%s> {", beanFullName, shortName).eol();
|
||||
writer.append(" constructor(name: String, root: R) : super(name, root)").eol();
|
||||
writer.append(" constructor(name: String, root: R, prefix: String) : super(name, root, prefix)").eol();
|
||||
writer.eol();
|
||||
writer.append(" override fun filterMany(apply: java.util.function.Consumer<Q%s>): R {", shortName).eol();
|
||||
writer.append(" val list: io.ebean.ExpressionList<%s> = _newExpressionList<%s>()", beanFullName, beanFullName).eol();
|
||||
writer.append(" apply.accept(Q%s(list))", shortName).eol();
|
||||
writer.append(" return _filterMany(list)").eol();
|
||||
writer.append(" }").eol().eol();
|
||||
writer.append(" override fun filterMany(filter: io.ebean.ExpressionList<%s>): R {", beanFullName).eol();
|
||||
writer.append(" return _filterMany(filter)").eol();
|
||||
writer.append(" }").eol().eol();
|
||||
writer.append(" override fun filterManyRaw(rawExpressions: String, vararg params: Any): R {").eol();
|
||||
writer.append(" return _filterManyRaw(rawExpressions, *params)").eol();
|
||||
writer.append(" }").eol().eol();
|
||||
|
||||
// Ebean 14.x only
|
||||
writer.append(" @Deprecated(\"for removal, migrate to filterManyRaw()\")").eol();
|
||||
writer.append(" override fun filterMany(rawExpressions: String, vararg params: Any): R {").eol();
|
||||
writer.append(" return _filterMany(rawExpressions, *params)").eol();
|
||||
writer.append(" }").eol().eol();
|
||||
|
||||
writer.append(" override fun isEmpty(): R {").eol();
|
||||
writer.append(" return _isEmpty() ").eol();
|
||||
writer.append(" }").eol().eol();
|
||||
writer.append(" override fun isNotEmpty(): R {").eol();
|
||||
writer.append(" return _isNotEmpty() ").eol();
|
||||
writer.append(" }").eol().eol();
|
||||
|
||||
writer.append(" }").eol();
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user