Implemented converters from TemporalAmount into Long for various units
[jpa-converters] / src / main / java / de / juplo / jpa / converters / TemporalAmountToNanosConverter.java
diff --git a/src/main/java/de/juplo/jpa/converters/TemporalAmountToNanosConverter.java b/src/main/java/de/juplo/jpa/converters/TemporalAmountToNanosConverter.java
new file mode 100644 (file)
index 0000000..d38a1db
--- /dev/null
@@ -0,0 +1,29 @@
+package de.juplo.jpa.converters;
+
+import java.time.Duration;
+import java.time.temporal.ChronoUnit;
+import java.time.temporal.TemporalAmount;
+import javax.persistence.AttributeConverter;
+import javax.persistence.Converter;
+
+
+/**
+ * Converts a {@link TemporalAmount} into a {@link Long} representing
+ * nanoseconds.
+ * @author Kai Moritz
+ */
+@Converter
+public class TemporalAmountToNanosConverter implements AttributeConverter<TemporalAmount, Long>
+{
+  @Override
+  public Long convertToDatabaseColumn(TemporalAmount amount)
+  {
+    return amount.get(ChronoUnit.NANOS);
+  }
+
+  @Override
+  public TemporalAmount convertToEntityAttribute(Long nanos)
+  {
+    return Duration.ofNanos(nanos);
+  }
+}