Class TypeConfiguration

  • All Implemented Interfaces:
    Serializable, SessionFactoryObserver

    public class TypeConfiguration
    extends Object
    implements SessionFactoryObserver, Serializable
    Defines a set of available Type instances as isolated from other configurations. The isolation is defined by each instance of a TypeConfiguration.

    Note that each Type is inherently "scoped" to a TypeConfiguration. We only ever access a Type through a TypeConfiguration - specifically the TypeConfiguration in effect for the current persistence unit.

    Even though each Type instance is scoped to a TypeConfiguration, Types do not inherently have access to that TypeConfiguration (mainly because Type is an extension contract - meaning that Hibernate does not manage the full set of Types available in ever TypeConfiguration). However Types will often want access to the TypeConfiguration, which can be achieved by the Type simply implementing the TypeConfigurationAware interface.

    Since:
    5.3
    See Also:
    Serialized Form
    • Constructor Detail

      • TypeConfiguration

        public TypeConfiguration()
    • Method Detail

      • getUuid

        public String getUuid()
      • getCurrentBaseSqlTypeIndicators

        public JdbcTypeIndicators getCurrentBaseSqlTypeIndicators()
      • getJdbcToHibernateTypeContributionMap

        public Map<Integer,​Set<String>> getJdbcToHibernateTypeContributionMap()
      • getMetadataBuildingContext

        public MetadataBuildingContext getMetadataBuildingContext()
        Obtain the MetadataBuildingContext currently scoping the TypeConfiguration.
        Returns:
        The MetadataBuildingContext
        "API Note:"
        This will throw an exception if the SessionFactory is not yet bound here. See TypeConfiguration.Scope for more details regarding the stages a TypeConfiguration goes through
      • scope

        public org.hibernate.metamodel.model.domain.internal.MappingMetamodelImpl scope​(SessionFactoryImplementor sessionFactory)
      • getSessionFactory

        public SessionFactoryImplementor getSessionFactory()
        Obtain the SessionFactory currently scoping the TypeConfiguration.
        Returns:
        The SessionFactory
        Throws:
        IllegalStateException - if the TypeConfiguration is currently not associated with a SessionFactory (in "runtime stage").
        "API Note:"
        This will throw an exception if the SessionFactory is not yet bound here. See TypeConfiguration.Scope for more details regarding the stages a TypeConfiguration goes through (this is "runtime stage")
      • getServiceRegistry

        public ServiceRegistry getServiceRegistry()
        Obtain the ServiceRegistry scoped to the TypeConfiguration.
        Returns:
        The ServiceRegistry
        "API Note:"
        Depending on what the TypeConfiguration.Scope is currently scoped to will determine where the ServiceRegistry is obtained from.
      • sessionFactoryClosed

        public void sessionFactoryClosed​(SessionFactory factory)
        Description copied from interface: SessionFactoryObserver
        Callback to indicate that the given factory has been closed. Care should be taken in how (if at all) the passed factory reference is used since it is closed.
        Specified by:
        sessionFactoryClosed in interface SessionFactoryObserver
        Parameters:
        factory - The factory closed.
      • addBasicTypeRegistrationContributions

        public void addBasicTypeRegistrationContributions​(List<BasicTypeRegistration> contributions)
      • resolveCastTargetType

        public BasicValuedMapping resolveCastTargetType​(String name)
        Understands the following target type names for the cast() function: - String - Character - Byte, Integer, Long - Float, Double - Time, Date, Timestamp - LocalDate, LocalTime, LocalDateTime - BigInteger - BigDecimal - Binary - Boolean (fragile) (The type names are not case-sensitive.)
      • resolveArithmeticType

        public SqmExpressible<?> resolveArithmeticType​(SqmExpressible<?> firstType,
                                                       SqmExpressible<?> secondType)
        Determine the result type of an arithmetic operation as defined by the rules in section 6.5.8.1.
        See Also:
        QueryHelper.highestPrecedenceType2(org.hibernate.query.sqm.SqmExpressible<? extends X>, org.hibernate.query.sqm.SqmExpressible<? extends X>)
      • getBasicTypeForGenericJavaType

        public <J> BasicType<J> getBasicTypeForGenericJavaType​(Class<? super J> javaType,
                                                               Type... typeArguments)
      • getBasicTypeForJavaType

        public <J> BasicType<J> getBasicTypeForJavaType​(Class<J> javaType)
      • getBasicTypeForJavaType

        public <J> BasicType<J> getBasicTypeForJavaType​(Type javaType)
      • standardBasicTypeForJavaType

        public <J> BasicType<J> standardBasicTypeForJavaType​(Class<J> javaType)
      • getSqlTemporalType

        protected static TemporalType getSqlTemporalType​(int jdbcTypeCode)
      • getSqlIntervalType

        protected static IntervalType getSqlIntervalType​(int jdbcTypeCode)
      • isJdbcTemporalType

        public static boolean isJdbcTemporalType​(SqmExpressible<?> type)
      • isDuration

        public static boolean isDuration​(SqmExpressible<?> type)