TypeSafeActivator.applyDDL doesn't process comprising constraints when @NotNull goes
first
------------------------------------------------------------------------------------------
Key: HHH-5786
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-5786
Project: Hibernate Core
Issue Type: Bug
Affects Versions: 3.6.0
Reporter: Enrico Pizzorno
Priority: Minor
We have a custom constraint defined as:
{quote}
@Size(max=60)
...
public @interface Name {
String message() default "";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
{quote}
Then we can annotate some entities like this:
{quote}
public class MyEntity {
...
@NotNull
@Name
private String name;
...
}
{quote}
If @NotNull goes before @Name then when contraints are applied to column definitions by
calling TypeSafeActivator.applyDDL the constraint @Size(max=60) is ignored.
I think the problem is at line 200 from
*org.hibernate.cfg.beanvalidation.TypeSafeActivator*, method *private static boolean
applyConstraints(Set<ConstraintDescriptor<?>> constraintDescriptors, Property
property, PropertyDescriptor propertyDesc, Set<Class<?>> groups, boolean
canApplyNotNull)*:
{quote}
// pass an empty set as composing constraints inherit the main constraint and thus are
matching already
hasNotNull = hasNotNull || applyConstraints(
descriptor.getComposingConstraints(),
property, propertyDesc, null,
canApplyNotNull );
{quote}
If @NotNull is processed first then hasNotNull is set to true so the call to
applyConstraints at line 200 is never made.
Changing the order of the "or" operands will solve the problem:
{quote}
// pass an empty set as composing constraints inherit the main constraint and thus are
matching already
hasNotNull = applyConstraints(
descriptor.getComposingConstraints(),
property, propertyDesc, null,
canApplyNotNull ) || hasNotNull;
{quote}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira