Class DurationArgumentFactory

java.lang.Object
org.jdbi.v3.core.argument.AbstractArgumentFactory<Duration>
org.jdbi.v3.postgres.DurationArgumentFactory
All Implemented Interfaces:
ArgumentFactory, ArgumentFactory.Preparable

public class DurationArgumentFactory extends AbstractArgumentFactory<Duration>
Postgres version of argument factory for Duration.

For simplicity, this implementation makes the duration positive before proceeding. However, this can cause an ArithmeticException to be thrown. E.g., this can occur if your duration is -2^63 seconds.

Not all Durations can be represented as intervals in Postgres. One incompatibility results from Durations that are too large. This is due to (1) Durations using a long internally, and PGIntervals using ints; and (2) the conversion of days to months or years being ambiguous. Another results from Durations being too precise; they have nanosecond precision, whereas Postgres has only microsecond. An IllegalArgumentException will be thrown in these cases. The handling of the second is subject to revision in the future; for example, it would be reasonable to have a configurable truncation option.

  • Constructor Details

    • DurationArgumentFactory

      public DurationArgumentFactory()
  • Method Details

    • build

      public Argument build(Duration duration, ConfigRegistry config)
      Description copied from class: AbstractArgumentFactory
      Produce an argument object for the given value. When the implementation class has accepted a given type, it must then produce an argument instance or throw an exception.
      Specified by:
      build in class AbstractArgumentFactory<Duration>
      Parameters:
      duration - the value to convert to an argument
      config - the config registry
      Returns:
      An Argument for the given value. Must not be null!