我正在应用一个开发,其中我正在实现spring验证,我遇到一个问题,当我插入一个属性为codigo null的对象时,它会抛出一个错误,但我无法用try-catch捕捉它。
我希望当它因为null而失败时,我可以通过try-catch()获得该错误。
对象
@Column( name = "codigo" , unique = true , nullable = false , length = 255 )
@UniqueElements( message = "El codigo debe ser unico.")
@Length( max = 255 , message = "El codigo debe ser menos a 255 caracteres")
@NotNull( message = "El codigo es requerido.")
private String codigo;
@Column( name = "motivo" , unique = false , nullable = false , length = 255 )
@Length( max = 255 , message = "El motivo debe ser menos a 255 caracteres")
@NotNull( message = "El motivo es requerido.")
private String motivo;
@Column( name = "active" , unique = false , nullable = false )
@NotNull( message = "El estado es requerido.")
private Boolean active;
服务
@Transactional( rollbackFor = BusinessLayerException.class )
public String insertMotivoBaja( MotivoBajaTO motivoTO ) throws
BusinessLayerException {
try {
MotivoBaja motivo = super.getPersistentObject( motivoTO , MotivoBajaTOT.class );
return super.add( motivo );
}catch (Exception e) {
this.logger.error( e.getMessage() );
if( e.getMessage().toLowerCase().startsWith("El".toLowerCase() ) ) {
throw new BusinessLayerException( e.getMessage());
}
throw new BusinessLayerException( "Error al dar de alta el motivo. Por Favor intente nuevamente." );
}
}
错误
org.springframework.transaction.transactionsystemexception:无法提交jpa事务;嵌套异常为javax.persistence.rollbackexception:提交事务时出错
原因:javax.validation.unexpectedtypeexception:hv000030:找不到约束“org.hibernate.validator.constraints.uniqueelements”验证类型“java.lang.string”的验证器。检查“codigo”的配置
请求(正文)
{
"codigo":null,
"motivo":"No quiere ser mas cliente",
"active": true
}
1条答案
按热度按时间kmbjn2e31#
从文件中
验证所提供集合中的每个对象是否唯一
String
不是一个Collection
,并且引发的异常不会发生在try
方法,但在它之前,这就是为什么它没有被捕获