Converters must convert to a data-type, know by the database
[jpa-converters] / src / main / java / de / juplo / jpa / converters / OffsetDateTimeConverter.java
1 package de.juplo.jpa.converters;
2
3 import java.sql.Timestamp;
4 import java.time.OffsetDateTime;
5 import java.time.ZoneOffset;
6 import javax.persistence.AttributeConverter;
7 import javax.persistence.Converter;
8
9
10 /**
11  * Converts a {@link OffsetDateTime} to a {@link Timestamp}.
12  * @author Kai Moritz
13  */
14 @Converter(autoApply = true)
15 public class OffsetDateTimeConverter implements AttributeConverter<OffsetDateTime, Timestamp>
16 {
17   @Override
18   public Timestamp convertToDatabaseColumn(OffsetDateTime odt)
19   {
20     return Timestamp.from(odt.withOffsetSameInstant(ZoneOffset.UTC).toInstant());
21   }
22
23   @Override
24   public OffsetDateTime convertToEntityAttribute(Timestamp ts)
25   {
26     return OffsetDateTime.of(ts.toLocalDateTime(), ZoneOffset.UTC);
27   }
28 }