DATAJPA-808 - Introduced AttributeConverters for ZoneId for JSR-310 and ThreeTenBP.
This commit is contained in:
@@ -19,6 +19,7 @@ import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.time.ZoneId;
|
||||
import java.util.Date;
|
||||
|
||||
import javax.persistence.AttributeConverter;
|
||||
@@ -32,6 +33,8 @@ import org.springframework.data.convert.Jsr310Converters.InstantToDateConverter;
|
||||
import org.springframework.data.convert.Jsr310Converters.LocalDateTimeToDateConverter;
|
||||
import org.springframework.data.convert.Jsr310Converters.LocalDateToDateConverter;
|
||||
import org.springframework.data.convert.Jsr310Converters.LocalTimeToDateConverter;
|
||||
import org.springframework.data.convert.Jsr310Converters.StringToZoneIdConverter;
|
||||
import org.springframework.data.convert.Jsr310Converters.ZoneIdToStringConverter;
|
||||
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
|
||||
|
||||
/**
|
||||
@@ -99,4 +102,17 @@ public class Jsr310JpaConverters {
|
||||
return DateToInstantConverter.INSTANCE.convert(date);
|
||||
}
|
||||
}
|
||||
|
||||
@Converter(autoApply = true)
|
||||
public static class ZoneIdConverter implements AttributeConverter<ZoneId, String> {
|
||||
|
||||
public String convertToDatabaseColumn(ZoneId zoneId) {
|
||||
return ZoneIdToStringConverter.INSTANCE.convert(zoneId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ZoneId convertToEntityAttribute(String zoneId) {
|
||||
return StringToZoneIdConverter.INSTANCE.convert(zoneId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,11 +28,14 @@ import org.springframework.data.convert.ThreeTenBackPortConverters.InstantToDate
|
||||
import org.springframework.data.convert.ThreeTenBackPortConverters.LocalDateTimeToDateConverter;
|
||||
import org.springframework.data.convert.ThreeTenBackPortConverters.LocalDateToDateConverter;
|
||||
import org.springframework.data.convert.ThreeTenBackPortConverters.LocalTimeToDateConverter;
|
||||
import org.springframework.data.convert.ThreeTenBackPortConverters.StringToZoneIdConverter;
|
||||
import org.springframework.data.convert.ThreeTenBackPortConverters.ZoneIdToStringConverter;
|
||||
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
|
||||
import org.threeten.bp.Instant;
|
||||
import org.threeten.bp.LocalDate;
|
||||
import org.threeten.bp.LocalDateTime;
|
||||
import org.threeten.bp.LocalTime;
|
||||
import org.threeten.bp.ZoneId;
|
||||
|
||||
/**
|
||||
* JPA 2.1 converters to turn ThreeTen back port types into legacy {@link Date}s. To activate these converters make sure
|
||||
@@ -101,4 +104,17 @@ public class ThreeTenBackPortJpaConverters {
|
||||
return DateToInstantConverter.INSTANCE.convert(date);
|
||||
}
|
||||
}
|
||||
|
||||
@Converter(autoApply = true)
|
||||
public static class ZoneIdConverter implements AttributeConverter<ZoneId, String> {
|
||||
|
||||
public String convertToDatabaseColumn(ZoneId zoneId) {
|
||||
return ZoneIdToStringConverter.INSTANCE.convert(zoneId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ZoneId convertToEntityAttribute(String zoneId) {
|
||||
return StringToZoneIdConverter.INSTANCE.convert(zoneId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.time.ZoneId;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
@@ -35,4 +36,5 @@ public class DateTimeSample {
|
||||
LocalDate localDate;
|
||||
LocalTime localTime;
|
||||
LocalDateTime localDateTime;
|
||||
ZoneId zoneId;
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.time.ZoneId;
|
||||
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.PersistenceContext;
|
||||
@@ -68,6 +69,7 @@ public class Jsr310JpaConvertersIntegrationTests extends AbstractAttributeConver
|
||||
sample.localDate = LocalDate.now();
|
||||
sample.localTime = LocalTime.now();
|
||||
sample.localDateTime = LocalDateTime.now();
|
||||
sample.zoneId = ZoneId.of("Europe/Berlin");
|
||||
|
||||
em.persist(sample);
|
||||
em.flush();
|
||||
@@ -80,5 +82,6 @@ public class Jsr310JpaConvertersIntegrationTests extends AbstractAttributeConver
|
||||
assertThat(result.localDate, is(sample.localDate));
|
||||
assertThat(result.localTime, is(sample.localTime));
|
||||
assertThat(result.localDateTime, is(sample.localDateTime));
|
||||
assertThat(result.zoneId, is(sample.zoneId));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ import org.threeten.bp.Instant;
|
||||
import org.threeten.bp.LocalDate;
|
||||
import org.threeten.bp.LocalDateTime;
|
||||
import org.threeten.bp.LocalTime;
|
||||
import org.threeten.bp.ZoneId;
|
||||
|
||||
/**
|
||||
* @author Oliver Gierke
|
||||
@@ -36,4 +37,5 @@ public class DateTimeSample {
|
||||
LocalDate localDate;
|
||||
LocalTime localTime;
|
||||
LocalDateTime localDateTime;
|
||||
ZoneId zoneId;
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@ import org.threeten.bp.Instant;
|
||||
import org.threeten.bp.LocalDate;
|
||||
import org.threeten.bp.LocalDateTime;
|
||||
import org.threeten.bp.LocalTime;
|
||||
import org.threeten.bp.ZoneId;
|
||||
|
||||
/**
|
||||
* Integration tests for {@link ThreeTenBackPortJpaConverters}.
|
||||
@@ -68,6 +69,7 @@ public class ThreeTenBackPortJpaConvertersIntegrationTests extends AbstractAttri
|
||||
sample.localDate = LocalDate.now();
|
||||
sample.localTime = LocalTime.now();
|
||||
sample.localDateTime = LocalDateTime.now();
|
||||
sample.zoneId = ZoneId.of("Europe/Berlin");
|
||||
|
||||
em.persist(sample);
|
||||
em.flush();
|
||||
@@ -80,5 +82,6 @@ public class ThreeTenBackPortJpaConvertersIntegrationTests extends AbstractAttri
|
||||
assertThat(result.localDate, is(sample.localDate));
|
||||
assertThat(result.localTime, is(sample.localTime));
|
||||
assertThat(result.localDateTime, is(sample.localDateTime));
|
||||
assertThat(result.zoneId, is(sample.zoneId));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user