Skip to content

Commit 6d64e85

Browse files
committed
HHH-17576 inappropriate use of getDefaultTimestampPrecision() as default precision
This default is only appropriate for timestamps (hence the name) and should not be used for dates or plain times.
1 parent 6d4002b commit 6d64e85

File tree

7 files changed

+18
-8
lines changed

7 files changed

+18
-8
lines changed

hibernate-core/src/main/java/org/hibernate/type/descriptor/java/CalendarDateJavaType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,6 @@ public boolean isWider(JavaType<?> javaType) {
142142

143143
@Override
144144
public int getDefaultSqlPrecision(Dialect dialect, JdbcType jdbcType) {
145-
return dialect.getDefaultTimestampPrecision();
145+
return 0;
146146
}
147147
}

hibernate-core/src/main/java/org/hibernate/type/descriptor/java/CalendarTimeJavaType.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,9 @@ public boolean isWider(JavaType<?> javaType) {
144144

145145
@Override
146146
public int getDefaultSqlPrecision(Dialect dialect, JdbcType jdbcType) {
147-
return dialect.getDefaultTimestampPrecision();
147+
// times represent repeating events - they
148+
// almost never come equipped with seconds,
149+
// let alone fractional seconds!
150+
return 0;
148151
}
149152
}

hibernate-core/src/main/java/org/hibernate/type/descriptor/java/DateJavaType.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public TemporalType getPrecision() {
5252

5353
@Override
5454
public int getDefaultSqlPrecision(Dialect dialect, JdbcType jdbcType) {
55+
// this "Date" is really a timestamp
5556
return dialect.getDefaultTimestampPrecision();
5657
}
5758

hibernate-core/src/main/java/org/hibernate/type/descriptor/java/JdbcTimeJavaType.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,10 @@ public JdbcType getRecommendedJdbcType(JdbcTypeIndicators context) {
273273

274274
@Override
275275
public int getDefaultSqlPrecision(Dialect dialect, JdbcType jdbcType) {
276-
return dialect.getDefaultTimestampPrecision();
276+
// times represent repeating events - they
277+
// almost never come equipped with seconds,
278+
// let alone fractional seconds!
279+
return 0;
277280
}
278281

279282
@Override

hibernate-core/src/main/java/org/hibernate/type/descriptor/java/LocalTimeJavaType.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,10 @@ public boolean isWider(JavaType<?> javaType) {
189189

190190
@Override
191191
public int getDefaultSqlPrecision(Dialect dialect, JdbcType jdbcType) {
192-
return dialect.getDefaultTimestampPrecision();
192+
// times represent repeating events - they
193+
// almost never come equipped with seconds,
194+
// let alone fractional seconds!
195+
return 0;
193196
}
194197

195198
}

hibernate-core/src/main/java/org/hibernate/type/descriptor/java/OffsetTimeJavaType.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,10 @@ private static ZoneOffset getCurrentSystemOffset() {
251251

252252
@Override
253253
public int getDefaultSqlPrecision(Dialect dialect, JdbcType jdbcType) {
254-
return dialect.getDefaultTimestampPrecision();
254+
// times represent repeating events - they
255+
// almost never come equipped with seconds,
256+
// let alone fractional seconds!
257+
return 0;
255258
}
256259

257260
}

hibernate-core/src/main/java/org/hibernate/type/descriptor/sql/spi/DdlTypeRegistry.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,9 +162,6 @@ public String getTypeName(int typeCode, Dialect dialect) {
162162
return getTypeName( typeCode, Size.precision( dialect.getFloatPrecision() ) );
163163
case SqlTypes.DOUBLE:
164164
return getTypeName( typeCode, Size.precision( dialect.getDoublePrecision() ) );
165-
case SqlTypes.TIME:
166-
case SqlTypes.TIME_WITH_TIMEZONE:
167-
case SqlTypes.TIME_UTC:
168165
case SqlTypes.TIMESTAMP:
169166
case SqlTypes.TIMESTAMP_WITH_TIMEZONE:
170167
case SqlTypes.TIMESTAMP_UTC:

0 commit comments

Comments
 (0)