package de.juplo.jpa.converters;
-import java.time.Instant;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.sql.Time;
import java.time.LocalTime;
-import java.time.ZoneOffset;
-import java.util.Date;
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
/**
- * Converts a {@link LocalTime} to a {@link Date}, by converting it into
- * an {@Instant} for the GMT-timezone at the date of {@link Instant.EPOCH} and
- * then convering that {@link Instant} into a {@link Date} as suggested in the
- * official Java 8 Time tutorial.
- * <p>
- * The {@link Date} can then be persisted as
- * {@link java.persistene.TemporalType.TIME} with the help of the
- * {@link java.persist.Tmporal}-annotation.
- * @see https://docs.oracle.com/javase/tutorial/datetime/iso/legacy.html
+ * Converts a {@link LocalTime} to a {@link Time}.
* @author Kai Moritz
*/
@Converter(autoApply = true)
-public class LocalTimeConverter implements AttributeConverter<LocalTime, Date>
+public class LocalTimeConverter implements AttributeConverter<LocalTime, Time>
{
- private final static LocalDate EPOCH = LocalDate.from(Instant.EPOCH);
-
-
@Override
- public Date convertToDatabaseColumn(LocalTime lt)
+ public Time convertToDatabaseColumn(LocalTime lt)
{
- return Date.from(LocalDateTime.of(EPOCH, lt).toInstant(ZoneOffset.UTC));
+ return Time.valueOf(lt);
}
@Override
- public LocalTime convertToEntityAttribute(Date date)
+ public LocalTime convertToEntityAttribute(Time time)
{
- return LocalTime.from(date.toInstant());
+ return time.toLocalTime();
}
}