From a4526e622738d2360f2cd79407cfa3f8d406fa10 Mon Sep 17 00:00:00 2001 From: Kai Moritz Date: Mon, 21 Dec 2015 23:58:06 +0100 Subject: [PATCH] Implemented an OffsetDateTime-to-GregorianCalendar converter --- .../converters/OffsetDateTimeConverter.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/main/java/de/juplo/jpa/converters/OffsetDateTimeConverter.java diff --git a/src/main/java/de/juplo/jpa/converters/OffsetDateTimeConverter.java b/src/main/java/de/juplo/jpa/converters/OffsetDateTimeConverter.java new file mode 100644 index 0000000..d49da18 --- /dev/null +++ b/src/main/java/de/juplo/jpa/converters/OffsetDateTimeConverter.java @@ -0,0 +1,35 @@ +package de.juplo.jpa.converters; + +import java.time.OffsetDateTime; +import java.time.ZonedDateTime; +import java.util.GregorianCalendar; +import javax.persistence.AttributeConverter; +import javax.persistence.Converter; + + +/** + * Converts a {@link OffsetDateTime} to a {@link GregorianCalendar}, by first + * converting it into a {@link ZonedDateTime} and then converting it as + * suggested in the official Java 8 Time tutorial. + *

+ * The {@link GregorianCalendar} can then be persisted as + * {@link java.persistene.TemporalType.TIMESTAMP} with the help of the + * {@link java.persist.Tmporal}-annotation. + * @see https://docs.oracle.com/javase/tutorial/datetime/iso/legacy.html + * @author Kai Moritz + */ +@Converter(autoApply = true) +public class OffsetDateTimeConverter implements AttributeConverter +{ + @Override + public GregorianCalendar convertToDatabaseColumn(OffsetDateTime odt) + { + return GregorianCalendar.from(ZonedDateTime.from(odt)); + } + + @Override + public OffsetDateTime convertToEntityAttribute(GregorianCalendar calendar) + { + return OffsetDateTime.from(calendar.toZonedDateTime()); + } +} -- 2.20.1