document a couple of limitations

This commit is contained in:
Gavin 2022-12-31 13:27:03 +01:00
parent 1fe2509b3b
commit 1db1c08d3b
3 changed files with 27 additions and 11 deletions

View File

@ -22,6 +22,12 @@ package org.hibernate.boot.model;
* The most common way to integrate a {@code FunctionContributor} is by making * The most common way to integrate a {@code FunctionContributor} is by making
* it discoverable via the Java {@link java.util.ServiceLoader} facility. * it discoverable via the Java {@link java.util.ServiceLoader} facility.
* *
* @apiNote Unfortunately there's currently no programmatic way to register
* an instance with {@code Configuration} or {@code MetadataBuilder}.
* Nor can it be registered via a corresponding setting defined in
* {@link org.hibernate.jpa.boot.spi.JpaSettings}. These are things
* which <em>are</em> possible for its best friend {@link TypeContributor}.
*
* @see org.hibernate.query.sqm.function.SqmFunctionRegistry * @see org.hibernate.query.sqm.function.SqmFunctionRegistry
* *
* @author Karel Maesen * @author Karel Maesen

View File

@ -9,16 +9,21 @@ package org.hibernate.boot.model;
import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistry;
/** /**
* On object that contributes custom types and type descriptors, eventually * On object that contributes custom types and type descriptors, eventually to
* to a {@link org.hibernate.type.spi.TypeConfiguration}, via an instance * a {@link org.hibernate.type.spi.TypeConfiguration}, via an instance of
* of {@link TypeContributions}. * {@link TypeContributions}.
* <p> * <ul>
* <li>
* The most common way to integrate a {@code TypeContributor} is by making * The most common way to integrate a {@code TypeContributor} is by making
* it discoverable via the Java {@link java.util.ServiceLoader} facility. * it discoverable via the Java {@link java.util.ServiceLoader} facility.
* <p> * <li>
* Alternatively, a {@code TypeContributor} may be supplied to * Alternatively, a {@code TypeContributor} may be programmatically supplied to
* {@link org.hibernate.cfg.Configuration#registerTypeContributor(TypeContributor)} * {@link org.hibernate.cfg.Configuration#registerTypeContributor(TypeContributor)}
* or even {@link org.hibernate.boot.MetadataBuilder#applyTypes(TypeContributor)}. * or even {@link org.hibernate.boot.MetadataBuilder#applyTypes(TypeContributor)}.
* <li>
* Finally, in the JPA boostrap process, {@code TypeContributor}s may be
* listed via {@link org.hibernate.jpa.boot.spi.JpaSettings#TYPE_CONTRIBUTORS}.
* </ul>
* *
* @author Steve Ebersole * @author Steve Ebersole
* *

View File

@ -14,13 +14,18 @@ import org.hibernate.boot.MetadataBuilder;
* In implementation may be registered with the JPA provider using the property * In implementation may be registered with the JPA provider using the property
* {@value org.hibernate.jpa.boot.spi.JpaSettings#METADATA_BUILDER_CONTRIBUTOR}. * {@value org.hibernate.jpa.boot.spi.JpaSettings#METADATA_BUILDER_CONTRIBUTOR}.
* *
* @apiNote Currently, this API is only supported in the JPA persistence provider.
* It's unfortunate that implementations are not discoverable like
* {@link org.hibernate.boot.model.TypeContributor} and
* {@link org.hibernate.boot.model.FunctionContributor}.
*
* @author Vlad Mihalcea * @author Vlad Mihalcea
* *
* @since 5.3 * @since 5.3
*/ */
public interface MetadataBuilderContributor { public interface MetadataBuilderContributor {
/** /**
* Perform the process of contributing to MetadataSources. * Perform the process of contributing to the {@link MetadataBuilder}.
* *
* @param metadataBuilder The {@link MetadataBuilder}, to which to contribute. * @param metadataBuilder The {@link MetadataBuilder}, to which to contribute.
*/ */