diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanProperty.java b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanProperty.java
index bbee58e60..72379b232 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanProperty.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanProperty.java
@@ -1160,7 +1160,26 @@ public class BeanProperty implements ElPropertyValue, Property, STreeProperty {
public boolean isLob() {
return lob;
}
-
+
+ /**
+ * Returns true if this isLob() or the type will effectively map to a lob.
+ */
+ public boolean isDbLob() {
+ if (lob) {
+ return true;
+ }
+ switch (dbType) {
+ case DbPlatformType.JSON:
+ case DbPlatformType.JSONB:
+ return dbLength == 0; // must be analog to DbPlatformTypeMapping.lookup
+ case DbPlatformType.JSONBlob:
+ case DbPlatformType.JSONClob:
+ return true;
+ default:
+ return false;
+ }
+ }
+
public static boolean isLobType(int type) {
switch (type) {
case Types.CLOB:
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/DynamicPropertyAggregationFormula.java b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/DynamicPropertyAggregationFormula.java
index 970145632..ec1c7035b 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/DynamicPropertyAggregationFormula.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/DynamicPropertyAggregationFormula.java
@@ -62,4 +62,9 @@ class DynamicPropertyAggregationFormula extends DynamicPropertyBase {
ctx.appendParseSelect(parsedFormula, alias);
}
+ @Override
+ public boolean isDbLob() {
+ return false;
+ }
+
}
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java b/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java
index 1ad0dae58..1d32ce994 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java
@@ -760,6 +760,10 @@ final class CQueryBuilder {
return dbPlatform.isPlatform(Platform.POSTGRES);
}
+ boolean isPlatformDistinctNoLobs() {
+ return dbPlatform.isPlatform(Platform.DB2); // CHECKME: Also oracle?
+ }
+
/**
* Return the 'for update' FROM hint (sql server).
*/
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/query/STreeProperty.java b/ebean-core/src/main/java/io/ebeaninternal/server/query/STreeProperty.java
index 0981d5ac4..c13126858 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/query/STreeProperty.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/query/STreeProperty.java
@@ -28,6 +28,11 @@ public interface STreeProperty extends ScalarDataReader