Package org.hibernate.binder
Interface TypeBinder<A extends Annotation>
- All Known Implementing Classes:
BatchSizeBinder,CommentBinder,CommentsBinder,DiscriminatorOptionsBinder
Allows a user-written annotation to drive some customized model binding.
An implementation of this interface interacts directly with model objects
like PersistentClass and Component to implement the
semantics of some custom mapping annotation.
For example, this annotation disables rowcount checking for insert, update, and delete statements for annotated entities:
@TypeBinderType(binder = NoResultCheck.Binder.class)
@Target(TYPE) @Retention(RUNTIME)
public @interface NoResultCheck {
class Binder implements TypeBinder<NoResultCheck> {
@Override
public void bind(NoResultCheck annotation,
MetadataBuildingContext buildingContext,
PersistentClass persistentClass) {
persistentClass.setInsertCheckStyle(NONE);
persistentClass.setUpdateCheckStyle(NONE);
persistentClass.setDeleteCheckStyle(NONE);
}
@Override
public void bind(NoResultCheck annotation,
MetadataBuildingContext buildingContext,
Component embeddableClass) {
throw new AnnotationException("'@NoResultCheck' cannot annotate an '@Embeddable' class");
}
}
}
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionvoidbind(A annotation, MetadataBuildingContext buildingContext, Component embeddableClass) Perform some custom configuration of the model relating to the given annotated embeddable class.voidbind(A annotation, MetadataBuildingContext buildingContext, PersistentClass persistentClass) Perform some custom configuration of the model relating to the given annotated entity class.
-
Method Details
-
bind
Perform some custom configuration of the model relating to the given annotated entity class.- Parameters:
annotation- an annotation of the entity class that is declared as anTypeBinderTypepersistentClass- the entity class
-
bind
Perform some custom configuration of the model relating to the given annotated embeddable class.- Parameters:
annotation- an annotation of the embeddable class that is declared as anTypeBinderTypeembeddableClass- the embeddable class
-