Skip to content

Commit cbfb0f7

Browse files
committed
Alter JSR-310 converters to use java.sql.Timestamp instead of java.util.Date.
Closes #2077.
1 parent cc1eb9c commit cbfb0f7

File tree

1 file changed

+37
-10
lines changed

1 file changed

+37
-10
lines changed

spring-data-jpa/src/main/java/org/springframework/data/jpa/convert/threeten/Jsr310JpaConverters.java

+37-10
Original file line numberDiff line numberDiff line change
@@ -15,26 +15,28 @@
1515
*/
1616
package org.springframework.data.jpa.convert.threeten;
1717

18+
import jakarta.persistence.AttributeConverter;
19+
import jakarta.persistence.Converter;
20+
21+
import java.sql.Timestamp;
1822
import java.time.Instant;
1923
import java.time.LocalDate;
2024
import java.time.LocalDateTime;
2125
import java.time.LocalTime;
2226
import java.time.ZoneId;
2327
import java.util.Date;
2428

25-
import jakarta.persistence.AttributeConverter;
26-
import jakarta.persistence.Converter;
27-
28-
import org.springframework.data.convert.Jsr310Converters.DateToInstantConverter;
2929
import org.springframework.data.convert.Jsr310Converters.DateToLocalDateConverter;
3030
import org.springframework.data.convert.Jsr310Converters.DateToLocalDateTimeConverter;
3131
import org.springframework.data.convert.Jsr310Converters.DateToLocalTimeConverter;
32-
import org.springframework.data.convert.Jsr310Converters.InstantToDateConverter;
3332
import org.springframework.data.convert.Jsr310Converters.LocalDateTimeToDateConverter;
3433
import org.springframework.data.convert.Jsr310Converters.LocalDateToDateConverter;
3534
import org.springframework.data.convert.Jsr310Converters.LocalTimeToDateConverter;
3635
import org.springframework.data.convert.Jsr310Converters.StringToZoneIdConverter;
3736
import org.springframework.data.convert.Jsr310Converters.ZoneIdToStringConverter;
37+
import org.springframework.data.convert.ReadingConverter;
38+
import org.springframework.data.convert.WritingConverter;
39+
import org.springframework.lang.NonNull;
3840
import org.springframework.lang.Nullable;
3941
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
4042

@@ -46,6 +48,7 @@
4648
*
4749
* @author Oliver Gierke
4850
* @author Kevin Peters
51+
* @author Greg Turnquist
4952
*/
5053
public class Jsr310JpaConverters {
5154

@@ -98,18 +101,18 @@ public LocalDateTime convertToEntityAttribute(Date date) {
98101
}
99102

100103
@Converter(autoApply = true)
101-
public static class InstantConverter implements AttributeConverter<Instant, Date> {
104+
public static class InstantConverter implements AttributeConverter<Instant, Timestamp> {
102105

103106
@Nullable
104107
@Override
105-
public Date convertToDatabaseColumn(Instant instant) {
106-
return instant == null ? null : InstantToDateConverter.INSTANCE.convert(instant);
108+
public Timestamp convertToDatabaseColumn(Instant instant) {
109+
return instant == null ? null : InstantToTimestampConverter.INSTANCE.convert(instant);
107110
}
108111

109112
@Nullable
110113
@Override
111-
public Instant convertToEntityAttribute(Date date) {
112-
return date == null ? null : DateToInstantConverter.INSTANCE.convert(date);
114+
public Instant convertToEntityAttribute(Timestamp timestamp) {
115+
return timestamp == null ? null : TimestampToInstantConverter.INSTANCE.convert(timestamp);
113116
}
114117
}
115118

@@ -128,4 +131,28 @@ public ZoneId convertToEntityAttribute(String zoneId) {
128131
return zoneId == null ? null : StringToZoneIdConverter.INSTANCE.convert(zoneId);
129132
}
130133
}
134+
135+
@ReadingConverter
136+
enum TimestampToInstantConverter implements org.springframework.core.convert.converter.Converter<Timestamp, Instant> {
137+
138+
INSTANCE;
139+
140+
@NonNull
141+
@Override
142+
public Instant convert(Timestamp source) {
143+
return source.toInstant();
144+
}
145+
}
146+
147+
@WritingConverter
148+
enum InstantToTimestampConverter implements org.springframework.core.convert.converter.Converter<Instant, Timestamp> {
149+
150+
INSTANCE;
151+
152+
@NonNull
153+
@Override
154+
public Timestamp convert(Instant source) {
155+
return Timestamp.from(source);
156+
}
157+
}
131158
}

0 commit comments

Comments
 (0)