Implemented a mechanism to set the offset/time-zone to use for conversions
[jpa-converters] / src / main / java / de / juplo / jpa / converters / ZonedDateTimeConverter.java
1 package de.juplo.jpa.converters;
2
3 import java.sql.Timestamp;
4 import java.time.ZonedDateTime;
5 import javax.persistence.AttributeConverter;
6 import javax.persistence.Converter;
7
8
9 /**
10  * Converts a {@link ZonedDateTime} to a {@link Timestamp}.
11  * @author Kai Moritz
12  */
13 @Converter(autoApply = true)
14 public class ZonedDateTimeConverter implements AttributeConverter<ZonedDateTime, Timestamp>
15 {
16   @Override
17   public Timestamp convertToDatabaseColumn(ZonedDateTime zdt)
18   {
19     if (zdt == null)
20       return null;
21     return Timestamp.from(zdt.withZoneSameInstant(TimeConversions.getZoneId()).toInstant());
22   }
23
24   @Override
25   public ZonedDateTime convertToEntityAttribute(Timestamp ts)
26   {
27     if (ts == null)
28       return null;
29     return ZonedDateTime.ofInstant(ts.toInstant(), TimeConversions.getZoneId());
30   }
31 }