Class DurationJavaTypeDescriptor

  • All Implemented Interfaces:
    Serializable, BasicJavaType<Duration>, JavaType<Duration>

    public class DurationJavaTypeDescriptor
    extends AbstractClassJavaTypeDescriptor<Duration>
    Descriptor for Duration, which is represented internally as (long seconds, int nanoseconds), approximately 28 decimal digits of precision. This quantity must be stored in the database as a single integer with units of nanoseconds, since the ANSI SQL interval type is not well-supported. In practice, the 19 decimal digits of a SQL bigint are capable of representing six centuries in nanoseconds and are sufficient for many applications. However, by default, we map Java Duration to SQL numeric(21,6) here, which can comfortably represent 60 millenia of nanos.
    See Also:
    Serialized Form
    • Constructor Detail

      • DurationJavaTypeDescriptor

        public DurationJavaTypeDescriptor()
    • Method Detail

      • getRecommendedJdbcType

        public JdbcType getRecommendedJdbcType​(JdbcTypeDescriptorIndicators context)
        Description copied from interface: BasicJavaType
        Obtain the "recommended" SQL type descriptor for this Java type. The recommended aspect comes from the JDBC spec (mostly).
        Parameters:
        context - Contextual information
        Returns:
        The recommended SQL type descriptor
      • unwrap

        public <X> X unwrap​(Duration duration,
                            Class<X> type,
                            WrapperOptions options)
        Description copied from interface: JavaType
        Unwrap an instance of our handled Java type into the requested type.

        As an example, if this is a JavaTypeDescriptor<Integer> and we are asked to unwrap the Integer value as a Long we would return something like Long.valueOf( value.longValue() ).

        Intended use is during PreparedStatement binding.

        Type Parameters:
        X - The conversion type.
        Parameters:
        duration - The value to unwrap
        type - The type as which to unwrap
        options - The options
        Returns:
        The unwrapped value.
      • wrap

        public <X> Duration wrap​(X value,
                                 WrapperOptions options)
        Description copied from interface: JavaType
        Wrap a value as our handled Java type.

        Intended use is during ResultSet extraction.

        Type Parameters:
        X - The conversion type.
        Parameters:
        value - The value to wrap.
        options - The options
        Returns:
        The wrapped value.
      • getDefaultSqlPrecision

        public int getDefaultSqlPrecision​(Dialect dialect,
                                          JdbcType jdbcType)
        Description copied from interface: JavaType
        The default column precision when this Java type is mapped to a SQL data type which is parametrized by precision, for example Types.DECIMAL.
        Returns:
        Size.DEFAULT_PRECISION unless overridden
      • getDefaultSqlScale

        public int getDefaultSqlScale​(Dialect dialect,
                                      JdbcType jdbcType)
        Description copied from interface: JavaType
        The default column scale when this Java type is mapped to a SQL data type which is parametrized by scale, for example Types.DECIMAL.
        Returns:
        Size.DEFAULT_SCALE unless overridden