diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 57008ce92..519246cb6 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -36,5 +36,5 @@ jobs:
# - name: Maven single test
# run: mvn --batch-mode clean verify -Dtest="io.ebeaninternal.server.core.DefaultServer_getReferenceTest" -DfailIfNoTests=false
- name: Build with Maven
- run: mvn clean package
+ run: mvn -T 8 clean test
diff --git a/.github/workflows/db2luw.yml b/.github/workflows/db2luw.yml
index 2f3981ea2..bc33e42e4 100644
--- a/.github/workflows/db2luw.yml
+++ b/.github/workflows/db2luw.yml
@@ -35,4 +35,4 @@ jobs:
~/.m2
key: build-${{ env.cache-name }}
- name: db2
- run: mvn clean test -Dprops.file=testconfig/ebean-db2.properties
+ run: mvn -T 8 clean test -Dprops.file=testconfig/ebean-db2.properties
diff --git a/.github/workflows/h2database.yml b/.github/workflows/h2database.yml
index 19bf37db6..69327b590 100644
--- a/.github/workflows/h2database.yml
+++ b/.github/workflows/h2database.yml
@@ -37,5 +37,5 @@ jobs:
- name: Maven version
run: mvn --version
- name: H2Database
- run: mvn clean package
+ run: mvn -T 8 clean package
diff --git a/.github/workflows/jdk-18-ea.yml b/.github/workflows/jdk-18-ea.yml
index b814c77c9..22e4d9906 100644
--- a/.github/workflows/jdk-18-ea.yml
+++ b/.github/workflows/jdk-18-ea.yml
@@ -35,5 +35,5 @@ jobs:
~/.m2
key: build-${{ env.cache-name }}
- name: Build with Maven
- run: mvn package
+ run: mvn -T 8 test
diff --git a/.github/workflows/jdk-ea.yml b/.github/workflows/jdk-ea.yml
index 9bc66c0ef..04bc7026f 100644
--- a/.github/workflows/jdk-ea.yml
+++ b/.github/workflows/jdk-ea.yml
@@ -39,5 +39,5 @@ jobs:
- name: Maven version
run: mvn --version
- name: Build with Maven
- run: mvn package
+ run: mvn -T 8 test
diff --git a/.github/workflows/mariadb.yml b/.github/workflows/mariadb.yml
index b7db361cd..bcb65357a 100644
--- a/.github/workflows/mariadb.yml
+++ b/.github/workflows/mariadb.yml
@@ -35,4 +35,4 @@ jobs:
~/.m2
key: build-${{ env.cache-name }}
- name: mariadb 10.6
- run: mvn clean test -Dprops.file=testconfig/ebean-mariadb.properties
+ run: mvn -T 8 clean test -Dprops.file=testconfig/ebean-mariadb.properties
diff --git a/.github/workflows/mysql.yml b/.github/workflows/mysql.yml
index 3de91cb2d..2ab6722a2 100644
--- a/.github/workflows/mysql.yml
+++ b/.github/workflows/mysql.yml
@@ -35,4 +35,4 @@ jobs:
~/.m2
key: build-${{ env.cache-name }}
- name: mysql
- run: mvn clean test -Dprops.file=testconfig/ebean-mysql.properties
+ run: mvn -T 8 clean test -Dprops.file=testconfig/ebean-mysql.properties
diff --git a/.github/workflows/oracle18.yml b/.github/workflows/oracle.yml
similarity index 87%
rename from .github/workflows/oracle18.yml
rename to .github/workflows/oracle.yml
index 20a8d01e2..4be08e5e3 100644
--- a/.github/workflows/oracle18.yml
+++ b/.github/workflows/oracle.yml
@@ -1,5 +1,5 @@
-name: Oracle18
+name: Oracle
on:
workflow_dispatch:
@@ -35,4 +35,4 @@ jobs:
~/.m2
key: build-${{ env.cache-name }}
- name: oracle
- run: mvn clean test -Dprops.file=testconfig/ebean-oracle.properties
+ run: mvn -T 8 clean test -Dprops.file=testconfig/ebean-oracle.properties
diff --git a/.github/workflows/postgres.yml b/.github/workflows/postgres.yml
index b6359e698..a6efd5f0a 100644
--- a/.github/workflows/postgres.yml
+++ b/.github/workflows/postgres.yml
@@ -35,4 +35,4 @@ jobs:
~/.m2
key: build-${{ env.cache-name }}
- name: postgres
- run: mvn clean test -Dprops.file=testconfig/ebean-postgres.properties
+ run: mvn -T 8 clean test -Dprops.file=testconfig/ebean-postgres.properties
diff --git a/.github/workflows/sqlserver.yml b/.github/workflows/sqlserver.yml
index 169dd0017..369d6c9a7 100644
--- a/.github/workflows/sqlserver.yml
+++ b/.github/workflows/sqlserver.yml
@@ -35,4 +35,4 @@ jobs:
~/.m2
key: build-${{ env.cache-name }}
- name: sqlserver 2017
- run: mvn clean test -Dprops.file=testconfig/ebean-sqlserver17.properties
+ run: mvn -T 8 clean test -Dprops.file=testconfig/ebean-sqlserver17.properties
diff --git a/README.md b/README.md
index 83bcbae96..b43bd0b63 100644
--- a/README.md
+++ b/README.md
@@ -8,6 +8,7 @@
[](https://github.com/ebean-orm/ebean/actions/workflows/postgres.yml)
[](https://github.com/ebean-orm/ebean/actions/workflows/mysql.yml)
[](https://github.com/ebean-orm/ebean/actions/workflows/mariadb.yml)
+[](https://github.com/ebean-orm/ebean/actions/workflows/oracle.yml)
[](https://github.com/ebean-orm/ebean/actions/workflows/sqlserver.yml)
[](https://github.com/ebean-orm/ebean/actions/workflows/yugabyte.yml)
diff --git a/ebean-api/src/main/java/io/ebean/config/dbplatform/DatabasePlatform.java b/ebean-api/src/main/java/io/ebean/config/dbplatform/DatabasePlatform.java
index 90c1a5bb0..20b7ccd00 100644
--- a/ebean-api/src/main/java/io/ebean/config/dbplatform/DatabasePlatform.java
+++ b/ebean-api/src/main/java/io/ebean/config/dbplatform/DatabasePlatform.java
@@ -802,20 +802,6 @@ public class DatabasePlatform {
}
}
- /**
- * Return true if partitions exist for the given table.
- */
- public boolean tablePartitionsExist(Connection connection, String table) throws SQLException {
- return true;
- }
-
- /**
- * Return the SQL to create an initial partition for the given table.
- */
- public String tablePartitionInit(String tableName, PartitionMode mode) {
- return null;
- }
-
/**
* Escapes the like string for this DB-Platform
*/
diff --git a/ebean-core-type/src/main/java/io/ebean/core/type/ScalarType.java b/ebean-core-type/src/main/java/io/ebean/core/type/ScalarType.java
index 6c01811c5..af3e73493 100644
--- a/ebean-core-type/src/main/java/io/ebean/core/type/ScalarType.java
+++ b/ebean-core-type/src/main/java/io/ebean/core/type/ScalarType.java
@@ -16,25 +16,24 @@ import java.sql.SQLException;
*
* Scalar in the sense that the types are not compound types. Scalar types only
* map to a single database column.
- *
*
* These types fall into two categories. Types that are mapped natively to JDBC
* types and the rest. Types that map to native JDBC types do not require any
* data type conversion to be persisted to the database. These are java types
* that map via java.sql.Types.
- *
*
* Types that are not native to JDBC require some conversion. These include some
* common java types such as java.util.Date, java.util.Calendar,
* java.math.BigInteger.
- *
*
* Note that Booleans may be native for some databases and require conversion on
* other databases.
- *
*/
public interface ScalarType extends StringParser, StringFormatter, ScalarDataReader {
+ /**
+ * Return true for types that do mutation detection based on json content.
+ */
default boolean isJsonMapper() {
return false;
}
@@ -43,38 +42,40 @@ public interface ScalarType extends StringParser, StringFormatter, ScalarData
* Return true if this is a binary type and can not support parse() and format() from/to string.
* This allows Ebean to optimise marshalling types to string.
*/
- boolean isBinaryType();
+ default boolean isBinaryType() {
+ return false;
+ }
/**
* Return true if this is a mutable scalar type (like hstore).
*/
- boolean isMutable();
+ default boolean isMutable() {
+ return false;
+ }
/**
* For mutable scalarType's return true if the value is dirty.
* Non-dirty properties may be excluded from updates.
*/
- boolean isDirty(Object value);
+ default boolean isDirty(Object value) {
+ return false;
+ }
/**
* Return the default DB column length for this type.
*
* If a BeanProperty has no explicit length defined then this length should
* be assigned.
- *
- *
- * This is primarily to support defining a length on Enum types (to
- * supplement defining the length on the BeanProperty directly).
- *
*/
- int getLength();
+ default int getLength() {
+ return 0;
+ }
/**
* Return true if the type is native to JDBC.
*
* If it is native to JDBC then its values/instances do not need to be
* converted to and from an associated JDBC type.
- *
*/
boolean isJdbcNative();
@@ -83,16 +84,13 @@ public interface ScalarType extends StringParser, StringFormatter, ScalarData
*
* This type should be consistent with the toJdbcType() method in converting
* the type to the appropriate type for binding to preparedStatements.
- *
*/
int getJdbcType();
/**
* Return the type that matches the bean property type.
*
- * This represents the 'logical' type rather than the JDBC type this maps
- * to.
- *
+ * This represents the 'logical' type rather than the JDBC type this maps to.
*/
Class getType();
@@ -104,7 +102,7 @@ public interface ScalarType extends StringParser, StringFormatter, ScalarData
T read(DataReader reader) throws SQLException;
/**
- * Ignore the reading of this value. Typically this means moving the index
+ * Ignore the reading of this value. Typically, this means moving the index
* position in the ResultSet.
*/
void loadIgnore(DataReader reader);
@@ -114,20 +112,16 @@ public interface ScalarType extends StringParser, StringFormatter, ScalarData
*
* value may need to be converted from the logical bean property type to the
* JDBC type.
- *
*/
void bind(DataBinder binder, T value) throws SQLException;
/**
* Convert the value as necessary to the JDBC type.
*
- * Note that this should also match the type as per the getJdbcType()
- * method.
- *
+ * Note that this should also match the type as per the getJdbcType() method.
*
* This is typically used when the matching type is used in a where clause
* and we use this to ensure it is an appropriate jdbc type.
- *
*/
Object toJdbcType(Object value);
@@ -135,19 +129,14 @@ public interface ScalarType extends StringParser, StringFormatter, ScalarData
* Convert the value as necessary to the logical Bean type.
*
* The type as per the bean property.
- *
*
* This is used to automatically convert id values (typically from a string
* to a int, long or UUID).
- *
*/
T toBeanType(Object value);
/**
* Convert the type into a string representation.
- *
- * Reciprocal of parse().
- *
*/
String formatValue(T value);
@@ -155,10 +144,8 @@ public interface ScalarType extends StringParser, StringFormatter, ScalarData
* Convert the type into a string representation.
*
* This assumes the value is of the correct type.
- *
*
* This is so that ScalarType also implements the StringFormatter interface.
- *
*/
@Override
String format(Object value);
@@ -167,10 +154,6 @@ public interface ScalarType extends StringParser, StringFormatter, ScalarData
* Convert the string value to the appropriate java object.
*
* Mostly used to support CSV, JSON and XML parsing.
- *
- *
- * Reciprocal of formatValue().
- *
*/
@Override
T parse(String value);
@@ -183,29 +166,32 @@ public interface ScalarType extends StringParser, StringFormatter, ScalarData
/**
* Return true if the type can accept long systemTimeMillis input.
*
- * This is used to determine if is is sensible to use the
+ * This is used to determine if it is sensible to use the
* {@link #convertFromMillis(long)} method.
- *
*
* This includes the Date, Calendar, sql Date, Time, Timestamp, JODA types
* as well as Long, BigDecimal and String (although it generally is not
* expected to parse systemTimeMillis to a String or BigDecimal).
- *
*/
- boolean isDateTimeCapable();
+ default boolean isDateTimeCapable() {
+ return false;
+ }
/**
* Convert the value into a long version value.
*/
- long asVersion(T value);
+ default long asVersion(T value) {
+ throw new UnsupportedOperationException();
+ }
/**
* Convert the systemTimeMillis into the appropriate java object.
*
* For non dateTime types this will throw an exception.
- *
*/
- T convertFromMillis(long dateTime);
+ default T convertFromMillis(long dateTime) {
+ throw new UnsupportedOperationException();
+ }
/**
* Read the value from binary input.
@@ -215,7 +201,7 @@ public interface ScalarType extends StringParser, StringFormatter, ScalarData
/**
* Write the value to binary output.
*/
- void writeData(DataOutput dataOutput, T v) throws IOException;
+ void writeData(DataOutput dataOutput, T value) throws IOException;
/**
* Read the value from JsonParser.
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/PersistRequestBean.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/PersistRequestBean.java
index f73fcb97d..2af16b25b 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/core/PersistRequestBean.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/PersistRequestBean.java
@@ -77,8 +77,7 @@ public final class PersistRequestBean extends PersistRequest implements BeanP
*/
private List> updatedManys;
/**
- * Need to get and store the updated properties because the persist listener is notified
- * later on a different thread and the bean has been reset at that point.
+ * Store the updated properties to notify persist listener.
*/
private Set updatedProperties;
/**
@@ -122,7 +121,7 @@ public final class PersistRequestBean extends PersistRequest implements BeanP
*/
private boolean complete;
/**
- * Many to many intersection table changes that are held for later batch processing.
+ * Many-to-many intersection table changes that are held for later batch processing.
*/
private List saveMany;
@@ -148,9 +147,10 @@ public final class PersistRequestBean extends PersistRequest implements BeanP
// 'stateless update' - set loaded properties as dirty
intercept.setNewBeanForUpdate();
statelessUpdate = true;
+ } else if (!intercept.isDirty()) {
+ // check if any mutable scalar properties are dirty
+ beanDescriptor.checkAnyMutableProperties(intercept);
}
- // Mark Mutable scalar properties (like Hstore) as dirty where necessary
- beanDescriptor.checkMutableProperties(intercept);
}
this.concurrencyMode = beanDescriptor.concurrencyMode(intercept);
this.publish = Flags.isPublish(flags);
@@ -726,10 +726,6 @@ public final class PersistRequestBean extends PersistRequest implements BeanP
executeInsert();
return -1;
case UPDATE:
- if (beanPersistListener != null) {
- // store the updated properties for sending later
- updatedProperties = updatedProperties();
- }
executeUpdate();
return -1;
case DELETE_SOFT:
@@ -1208,6 +1204,11 @@ public final class PersistRequestBean extends PersistRequest implements BeanP
private void executeUpdate() {
setTenantId();
if (controller == null || controller.preUpdate(this)) {
+ // check dirty state for all mutable scalar properties (like DbJson, Hstore)
+ beanDescriptor.checkAllMutableProperties(intercept);
+ if (beanPersistListener != null) {
+ updatedProperties = updatedProperties();
+ }
postControllerPrepareUpdate();
beanManager.getBeanPersister().update(this);
}
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptor.java b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptor.java
index 6951438cf..e8d8f2d04 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptor.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptor.java
@@ -3140,9 +3140,9 @@ public class BeanDescriptor implements BeanType, STreeType, SpiBeanType {
}
/**
- * Check for mutable scalar types and mark as dirty if necessary.
+ * Check all mutable scalar types and mark as dirty if necessary.
*/
- public void checkMutableProperties(EntityBeanIntercept ebi) {
+ public void checkAllMutableProperties(EntityBeanIntercept ebi) {
for (BeanProperty beanProperty : propertiesMutable) {
int propertyIndex = beanProperty.propertyIndex();
if (ebi.isLoadedProperty(propertyIndex)) {
@@ -3156,6 +3156,23 @@ public class BeanDescriptor implements BeanType, STreeType, SpiBeanType {
}
}
+ /**
+ * Return true if any mutable properties are dirty.
+ */
+ public boolean checkAnyMutableProperties(EntityBeanIntercept ebi) {
+ for (BeanProperty beanProperty : propertiesMutable) {
+ int propertyIndex = beanProperty.propertyIndex();
+ if (ebi.isLoadedProperty(propertyIndex)) {
+ Object value = beanProperty.getValue(ebi.getOwner());
+ if (beanProperty.checkMutable(value, ebi.isDirtyProperty(propertyIndex), ebi)) {
+ ebi.markPropertyAsChanged(propertyIndex);
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
public ConcurrencyMode concurrencyMode(EntityBeanIntercept ebi) {
if (!hasVersionProperty(ebi)) {
return ConcurrencyMode.NONE;
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java b/ebean-core/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java
index 9adcf5224..af652be12 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java
@@ -359,6 +359,9 @@ public final class DefaultTypeManager implements TypeManager {
Type genericType = prop.getGenericType();
boolean hasJacksonAnnotations = objectMapperPresent && checkJacksonAnnotations(prop);
+ if (type.equals(String.class)) {
+ return ScalarTypeJsonString.typeFor(postgres, dbType);
+ }
if (type.equals(List.class)) {
DocPropertyType docType = getDocType(genericType);
if (!hasJacksonAnnotations && isValueTypeSimple(genericType)) {
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeBase.java b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeBase.java
index 5d2bb45e9..93ab0a6a6 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeBase.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeBase.java
@@ -18,41 +18,6 @@ abstract class ScalarTypeBase implements ScalarType {
this.jdbcType = jdbcType;
}
- @Override
- public long asVersion(T value) {
- throw new RuntimeException("not supported");
- }
-
- @Override
- public boolean isBinaryType() {
- // override for binary/byte based types
- return false;
- }
-
- /**
- * Default implementation of mutable false.
- */
- @Override
- public boolean isMutable() {
- return false;
- }
-
- /**
- * Default to true.
- */
- @Override
- public boolean isDirty(Object value) {
- return true;
- }
-
- /**
- * Just return 0.
- */
- @Override
- public int getLength() {
- return 0;
- }
-
@Override
public boolean isJdbcNative() {
return jdbcNative;
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeBaseVarchar.java b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeBaseVarchar.java
index 7fd7d974e..75eaa17b5 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeBaseVarchar.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeBaseVarchar.java
@@ -88,16 +88,6 @@ abstract class ScalarTypeBaseVarchar extends ScalarTypeBase {
return format(value);
}
- @Override
- public T convertFromMillis(long systemTimeMillis) {
- throw new TextException("Not Supported");
- }
-
- @Override
- public boolean isDateTimeCapable() {
- return false;
- }
-
@Override
@SuppressWarnings("unchecked")
public String format(Object value) {
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeBoolean.java b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeBoolean.java
index 56bc180a9..848b0fc2a 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeBoolean.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeBoolean.java
@@ -234,7 +234,6 @@ public final class ScalarTypeBoolean {
@Override
public int getLength() {
- // typically this will return 1
return Math.max(trueValue.length(), falseValue.length());
}
@@ -329,16 +328,6 @@ public final class ScalarTypeBoolean {
return Boolean.valueOf(value);
}
- @Override
- public Boolean convertFromMillis(long systemTimeMillis) {
- throw new TextException("Not Supported");
- }
-
- @Override
- public boolean isDateTimeCapable() {
- return false;
- }
-
@Override
public Boolean readData(DataInput dataInput) throws IOException {
if (!dataInput.readBoolean()) {
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeByte.java b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeByte.java
index 250bb1006..5437ecb77 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeByte.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeByte.java
@@ -85,16 +85,6 @@ final class ScalarTypeByte extends ScalarTypeBase {
throw new TextException("Not supported");
}
- @Override
- public Byte convertFromMillis(long systemTimeMillis) {
- throw new TextException("Not Supported");
- }
-
- @Override
- public boolean isDateTimeCapable() {
- return false;
- }
-
@Override
public Byte readData(DataInput dataInput) throws IOException {
if (!dataInput.readBoolean()) {
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeBytesBase.java b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeBytesBase.java
index 437c626f8..51f811ede 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeBytesBase.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeBytesBase.java
@@ -59,16 +59,6 @@ public abstract class ScalarTypeBytesBase extends ScalarTypeBase {
throw new TextException("Not supported");
}
- @Override
- public byte[] convertFromMillis(long systemTimeMillis) {
- throw new TextException("Not supported");
- }
-
- @Override
- public boolean isDateTimeCapable() {
- return false;
- }
-
@Override
public byte[] readData(DataInput dataInput) throws IOException {
if (!dataInput.readBoolean()) {
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeBytesEncrypted.java b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeBytesEncrypted.java
index df8b32ba9..ec753b307 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeBytesEncrypted.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeBytesEncrypted.java
@@ -26,26 +26,11 @@ public final class ScalarTypeBytesEncrypted implements ScalarType {
this.dataEncryptSupport = dataEncryptSupport;
}
- @Override
- public long asVersion(byte[] value) {
- throw new RuntimeException("not supported");
- }
-
@Override
public boolean isBinaryType() {
return true;
}
- @Override
- public boolean isMutable() {
- return false;
- }
-
- @Override
- public boolean isDirty(Object value) {
- return false;
- }
-
@Override
public void bind(DataBinder binder, byte[] value) throws SQLException {
value = dataEncryptSupport.encrypt(value);
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeDuration.java b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeDuration.java
index 8e34afe27..5daff6f4c 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeDuration.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeDuration.java
@@ -93,16 +93,6 @@ class ScalarTypeDuration extends ScalarTypeBase {
return Duration.parse(value);
}
- @Override
- public boolean isDateTimeCapable() {
- return false;
- }
-
- @Override
- public Duration convertFromMillis(long systemTimeMillis) {
- throw new TextException("Not Supported");
- }
-
@Override
public Duration jsonRead(JsonParser parser) throws IOException {
return Duration.parse(parser.getValueAsString());
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeEncryptedWrapper.java b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeEncryptedWrapper.java
index 1a552d11a..392fc1b86 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeEncryptedWrapper.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeEncryptedWrapper.java
@@ -30,11 +30,6 @@ public final class ScalarTypeEncryptedWrapper implements ScalarType, Local
return dataEncryptSupport.encryptObject(formatValue);
}
- @Override
- public long asVersion(T value) {
- throw new RuntimeException("not supported");
- }
-
@Override
public boolean isBinaryType() {
return wrapped.isBinaryType();
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeEnumStandard.java b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeEnumStandard.java
index 969bfd016..d33b06af4 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeEnumStandard.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeEnumStandard.java
@@ -229,16 +229,6 @@ final class ScalarTypeEnumStandard {
return Enum.valueOf(enumType, value);
}
- @Override
- public Object convertFromMillis(long systemTimeMillis) {
- throw new TextException("Not Supported");
- }
-
- @Override
- public boolean isDateTimeCapable() {
- return false;
- }
-
@Override
public Object jsonRead(JsonParser parser) throws IOException {
if (parser.getCodec() != null) {
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeEnumWithMapping.java b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeEnumWithMapping.java
index cafee64f7..287c11f60 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeEnumWithMapping.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeEnumWithMapping.java
@@ -39,16 +39,6 @@ class ScalarTypeEnumWithMapping extends ScalarTypeEnumStandard.EnumBase implemen
return enumType == null;
}
- @Override
- public long asVersion(Object value) {
- throw new RuntimeException("not supported");
- }
-
- @Override
- public boolean isBinaryType() {
- return false;
- }
-
/**
* Return the IN values for DB constraint construction.
*/
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeFile.java b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeFile.java
index 6430e2d1c..b10b206de 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeFile.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeFile.java
@@ -126,16 +126,6 @@ final class ScalarTypeFile extends ScalarTypeBase {
throw new TextException("Not supported");
}
- @Override
- public File convertFromMillis(long systemTimeMillis) {
- throw new TextException("Not supported");
- }
-
- @Override
- public boolean isDateTimeCapable() {
- return false;
- }
-
@Override
public File readData(DataInput dataInput) throws IOException {
// skip reading large file
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeJsonCollection.java b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeJsonCollection.java
index e40e1a9ae..e78f6b02d 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeJsonCollection.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeJsonCollection.java
@@ -80,16 +80,6 @@ abstract class ScalarTypeJsonCollection extends ScalarTypeBase implements
return docPropertyType;
}
- @Override
- public boolean isDateTimeCapable() {
- return false;
- }
-
- @Override
- public T convertFromMillis(long dateTime) {
- return null;
- }
-
@Override
public T readData(DataInput dataInput) throws IOException {
if (!dataInput.readBoolean()) {
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeJsonMap.java b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeJsonMap.java
index b5942289e..96030c23f 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeJsonMap.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeJsonMap.java
@@ -215,16 +215,6 @@ abstract class ScalarTypeJsonMap extends ScalarTypeBase