我有一个JPA Spring数据存储库。我能以某种方式定义Hibernate用于给定操作的验证组吗(让我们说保存)?在某些情况下,我需要验证某些组,而在其他情况下则不需要。这将取决于服务水平。 Spring Data可能吗?
如果我可以定义验证组的话,这对我也是可以的,这些验证组仅用于新对象,而不用于更新。
答案 0 :(得分:0)
糟糕。抱歉。此解决方案适用于Spring Data Rest。
如果您使用Spring Data JPA,则必须在每次JPA调用之前手动进行验证。
------已编辑
@Configuration
@RequiredArgsConstructor
protected class RepositoryConfig implements RepositoryRestConfigurer {
private static final String BEFORE_CREATE = "beforeCreate";
private static final String BEFORE_SAVE = "beforeSave";
@Override
public void configureValidatingRepositoryEventListener(ValidatingRepositoryEventListener validatingListener) {
validatingListener.addValidator(BEFORE_CREATE, createValidator());
validatingListener.addValidator(BEFORE_SAVE, saveValidator());
}
}
实现createValidator()
和saveValidator()
bean:
public class CreateValidator implements Validator {
private final LocalValidatorFactoryBean smartValidator;
@Override
public boolean supports(Class<?> clazz) {
return true;
}
@Override
public void validate(Object target, Errors errors) {
smartValidator.validate(target, errors, {whatEverHintsYouWant} );
}
}
将服务bean注入其中,并根据需要在其中计算提示。
您甚至可以使用supports
方法为每个实体创建不同的验证器。