smi*_*tan 0 java validation spring hibernate
我正在使用 hibernate-validator 5.1.2.Final 和 Spring 4.0.6.RELEASE 并希望利用快速失败功能,以便当我配置具有多个约束的注释时,它们不会全部执行,而只会执行第一个错误消息被返回。
@MultipartFileNotEmpty
@CsvFile
@Documented
@Constraint(validatedBy = { })
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface OrderCsv {
String message() default "";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
Run Code Online (Sandbox Code Playgroud)
通过查看Hibernate Validator文档,我似乎可以在全局级别启用fail_fast,但我不确定如何在 Java 配置中启用它。我当前的休眠配置如下所示:
@Configuration
@EnableTransactionManagement
@ComponentScan(basePackages="uk.co.project")
public class HibernateConfig {
final static String JDBC_URL = "jdbc:mysql://localhost:3306/";
final static String DRIVER_CLASS = "com.mysql.jdbc.Driver";
@Autowired
private Environment environment;
@Bean
public DataSource dataSource() {
BasicDataSource dataSource = new org.apache.commons.dbcp2.BasicDataSource();
dataSource.setDriverClassName(DRIVER_CLASS);
dataSource.setUsername(environment.getProperty("datasource.username"));
dataSource.setPassword(environment.getProperty("datasource.password"));
dataSource.setUrl(JDBC_URL + environment.getProperty("datasource.database"));
dataSource.setInitialSize(10);
return dataSource;
}
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setPackagesToScan(new String[] { "uk.co.project.models" });
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}
@Bean
public HibernateTransactionManager transactionManager() {
HibernateTransactionManager txManager = new HibernateTransactionManager();
txManager.setSessionFactory(sessionFactory().getObject());
return txManager;
}
@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
return new PersistenceExceptionTranslationPostProcessor();
}
Properties hibernateProperties() {
return new Properties() {
private static final long serialVersionUID = 1L;
{
setProperty("hibernate.hbm2ddl.auto", "validate");
setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
setProperty("hibernate.globally_quoted_identifiers", "true");
setProperty("hibernate.show_sql", "true");
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试添加setProperty("hibernate.validator.fail_fast", "true");到我的hibernateProperties但没有成功。我将不胜感激任何关于如何在我的休眠java配置中启用fail_fast的指示。
“hibernate.validator.fail_fast”属性不是 sessionFactory 的属性,而是 ValidatorFactory 的属性,您可以尝试这样的操作:
@Bean
public LocalValidatorFactoryBean getValidatorFactory() {
LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean();
localValidatorFactoryBean.getValidationPropertyMap().put("hibernate.validator.fail_fast", "true");
return localValidatorFactoryBean;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3221 次 |
| 最近记录: |