Вы можете использовать валидаторы.Я думаю, что ваше требование не может рассматриваться как проблема проектирования базы данных, а как проблема проверки.используйте вместо этого валидатор.Вы можете написать свой собственный валидатор компонента (JSR-303), который проверяет количество элементов в списках:
public class MyListSizeValidator implements
ConstraintValidator<MyListConstraintAnnotation, List<?> /* list of any type */ > {
public void initialize(MyListConstraintAnnotation myannotation) {
//To change body of implemented methods use File | Settings | File Templates.
}
public boolean isValid(List<?> mylist, ConstraintValidatorContext constraintValidatorContext) {
return mylist.size() < 4;
}
}
@Documented
@Constraint(validatedBy = MyListSizeValidator.class)
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RetentionPolicy.RUNTIME)
public @interface MyListConstraintAnnotation {
String message() default "List is full!";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
использование будет выглядеть так:
class MyCronBean {
@NotNull
@MyListConstraintAnnotation
private List<MyObject> list;
/** setters and getters */
}
ОБНОВЛЕНИЕ: вы можетеиспользовать для реализации JSR-303 «средство проверки гибернации» в Maven:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.0.2.GA</version>
</dependency>