diff --git a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeDayOfWeek.java b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeDayOfWeek.java index 73fa4d3f0..d1eb890c2 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeDayOfWeek.java +++ b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeDayOfWeek.java @@ -1,5 +1,7 @@ package com.avaje.ebeaninternal.server.type; +import java.sql.SQLException; +import java.sql.Types; import java.time.DayOfWeek; /** @@ -19,4 +21,31 @@ public class ScalarTypeDayOfWeek extends ScalarTypeEnumWithMapping { public ScalarTypeDayOfWeek() { super(beanDbMap, DayOfWeek.class, 1); } + + /** + * Bind DayOfWeek enum using getValue(). + */ + @Override + public void bind(DataBind b, Object value) throws SQLException { + if (value == null) { + b.setNull(Types.INTEGER); + } else { + // avoiding the map lookup + b.setInt(((DayOfWeek)value).getValue()); + } + } + + /** + * Read DayOfWeek using int value. + */ + @Override + public Object read(DataReader dataReader) throws SQLException { + Integer i = dataReader.getInt(); + if (i == null) { + return null; + } else { + // avoiding the map lookup + return DayOfWeek.of(i); + } + } } diff --git a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeEnumStandard.java b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeEnumStandard.java index ca327675a..b8e7014b5 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeEnumStandard.java +++ b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeEnumStandard.java @@ -101,7 +101,7 @@ public class ScalarTypeEnumStandard { if (beanValue == null) { return null; } - return ((Enum) beanValue).toString(); + return beanValue.toString(); } public Object toBeanType(Object dbValue) { @@ -186,7 +186,7 @@ public class ScalarTypeEnumStandard { return dbValue; } - int ordinal = ((Integer) dbValue).intValue(); + int ordinal = (Integer) dbValue; if (ordinal < 0 || ordinal >= enumArray.length) { String m = "Unexpected ordinal [" + ordinal + "] out of range [" + enumArray.length + "]"; throw new IllegalStateException(m); diff --git a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeMonth.java b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeMonth.java index 203a11b4c..e6f65417c 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeMonth.java +++ b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeMonth.java @@ -1,5 +1,7 @@ package com.avaje.ebeaninternal.server.type; +import java.sql.SQLException; +import java.sql.Types; import java.time.Month; /** @@ -19,4 +21,31 @@ public class ScalarTypeMonth extends ScalarTypeEnumWithMapping { public ScalarTypeMonth() { super(beanDbMap, Month.class, 1); } + + /** + * Bind Month enum value. + */ + @Override + public void bind(DataBind b, Object value) throws SQLException { + if (value == null) { + b.setNull(Types.INTEGER); + } else { + // avoiding the map lookup + b.setInt(((Month)value).getValue()); + } + } + + /** + * Read Month enum from integer. + */ + @Override + public Object read(DataReader dataReader) throws SQLException { + Integer i = dataReader.getInt(); + if (i == null) { + return null; + } else { + // avoiding the map lookup + return Month.of(i); + } + } }