Package org.hibernate.annotations

Annotation Type ValueGenerationType


  • @Target(ANNOTATION_TYPE)@Retention(RUNTIME)public @interfaceValueGenerationType
    Meta-annotation used to mark another annotation as providing configuration for a customvalue generation strategy. This is the best way to work with customized value generation in Hibernate.

    For example, if we have a custom value generator:

     public class SKUGeneration         implements BeforeExecutionGenerator {     public SKUGeneration(SKU sku, Member annotatedMember,                          GeneratorCreationContext context) {         ...     }     ... }

    Then we may also define an annotation which associates this generator with a field or property of an entity and supplies configuration parameters:

     @ValueGenerationType(generatedBy = SKUGeneration.class) @Retention(RUNTIME) @Target({METHOD,FIELD}) public @interface SKU {}

    and we may use it as follows:

     @SKU String sku;

    No more than one generator annotation may be placed on a given property.

    Adding a generator annotation to an entity property causes the value of the property to be generated when any SQL statement toinsert orupdate the entity is executed.

    Every generator annotation type has anGenerator implementation which is responsible for generating values. It must be either:

    A generator annotation may have members, which are used to configure the value generator, if either:

    There are several excellent examples of the use of this machinery right here in this package.TenantId and its corresponding generatorTenantIdGeneration are a good place to start.

    A@ValueGenerationType annotation must have retention policyRetentionPolicy.RUNTIME.

    See Also:
    Generator,BeforeExecutionGenerator,OnExecutionGenerator,AnnotationBasedGenerator