Search in sources :

Example 1 with ValueGenerationType

use of org.hibernate.annotations.ValueGenerationType in project hibernate-orm by hibernate.

the class PropertyBinder method getValueGenerationFromAnnotation.

/**
	 * In case the given annotation is a value generator annotation, the corresponding value generation strategy to be
	 * applied to the given property is returned, {@code null} otherwise.
	 */
private <A extends Annotation> AnnotationValueGeneration<A> getValueGenerationFromAnnotation(XProperty property, A annotation) {
    ValueGenerationType generatorAnnotation = annotation.annotationType().getAnnotation(ValueGenerationType.class);
    if (generatorAnnotation == null) {
        return null;
    }
    Class<? extends AnnotationValueGeneration<?>> generationType = generatorAnnotation.generatedBy();
    AnnotationValueGeneration<A> valueGeneration = instantiateAndInitializeValueGeneration(annotation, generationType, property);
    if (annotation.annotationType() == Generated.class && property.isAnnotationPresent(javax.persistence.Version.class) && valueGeneration.getGenerationTiming() == GenerationTiming.INSERT) {
        throw new AnnotationException("@Generated(INSERT) on a @Version property not allowed, use ALWAYS (or NEVER): " + StringHelper.qualify(holder.getPath(), name));
    }
    return valueGeneration;
}
Also used : ValueGenerationType(org.hibernate.annotations.ValueGenerationType) AnnotationException(org.hibernate.AnnotationException)

Aggregations

AnnotationException (org.hibernate.AnnotationException)1 ValueGenerationType (org.hibernate.annotations.ValueGenerationType)1