Annotation Interface IdGeneratorType


@Target(ANNOTATION_TYPE) @Retention(RUNTIME) public @interface IdGeneratorType
Meta-annotation used to mark another annotation as providing configuration for a custom identifier generator. This is the best way to work with customized identifier generation in Hibernate.

For example, if we have a custom identifier generator:

 public class CustomSequenceGenerator implements BeforeExecutionGenerator {
     public CustomSequenceGenerator(CustomSequence config, Member annotatedMember,
                                    GeneratorCreationContext context) {
         ...
     }
     ...
 }
 

Then we may also define an annotation which associates this generator with an entity and supplies configuration parameters:

 @IdGeneratorType(CustomSequenceGenerator.class)
 @Retention(RUNTIME) @Target({METHOD,FIELD})
 public @interface CustomSequence {
     String name();
     int startWith() default 1;
     int incrementBy() default 50;
 }
 

and we may use it as follows:

 @Id @CustomSequence(name = "mysequence", startWith = 0)
 private Integer id;
 

We did not use the JPA-defined GeneratedValue here, since that API is designed around the use of stringly-typed names. The @CustomSequence annotation itself implies that id is a generated value.

An id generator annotation may have members, which are used to configure the id generator, if either:

For a more complete example, see the annotation UuidGenerator and the corresponding generator class UuidGenerator.

A @IdGeneratorType annotation must have retention policy RetentionPolicy.RUNTIME.

If a Generator may be used to generate values of non-identifier fields, its generator annotation should also be meta-annotated @ValueGenerationType.

Since:
6.0
See Also:
  • Required Element Summary

    Required Elements
    Modifier and Type
    Required Element
    Description
    Class<? extends Generator>
    A class which implements Generator.