Javax.validation.ConstraintViolationException: validation failed for classes

Criei uma annotation para validar um campo especifico no meu modelo. A validação de fato funciona, porém ao invés de retornar uma mensagem de erro na pagina XHTML retorna uma Exception. Alguém saberia informar porque isso acontece? Será que tem alguma coisa a ver com os sets ou o java.sql.Date? Desde já grato! E perdão se coloquei a pergunta no lugar errado.

javax.faces.el.EvaluationException: javax.validation.ConstraintViolationException: validation failed for classes [com.placa.model.Placa] during persist time for groups [javax.validation.groups.Default, ]
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:787)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1252)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:508)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Unknown Source)
Caused by: javax.validation.ConstraintViolationException: validation failed for classes [com.placa.model.Placa] during persist time for groups [javax.validation.groups.Default, ]
	at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.validate(BeanValidationEventListener.java:132)
	at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.onPreInsert(BeanValidationEventListener.java:71)
	at org.hibernate.action.EntityIdentityInsertAction.preInsert(EntityIdentityInsertAction.java:159)
	at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:65)
	at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:268)
	at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:321)
	at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)
	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)
	at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:69)
	at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:179)
	at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:135)
	at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:61)
	at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:800)
	at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:774)
	at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:778)
	at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:668)
	at com.placa.daoimpl.PlacaDAOJPAImp.save(PlacaDAOJPAImp.java:21)
	at com.placa.regrasnegocio.PlacaRN.salvaPlaca(PlacaRN.java:16)
	at com.placa.web.PlacaMB.salvarPlaca(PlacaMB.java:40)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:273)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
	... 28 more

[code]
Annotation

@Constraint(validatedBy = CurrentOrFutureDayValidator.class)
@Documented
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface CurrentOrFutureDay {

String message() default "Data deve ser igual ou superior a atual";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
} [/code]

Classe de Validação

[code]
import java.sql.Date;
import java.util.GregorianCalendar;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

public class CurrentOrFutureDayValidator implements ConstraintValidator<CurrentOrFutureDay, Date> {

@Override
public void initialize(CurrentOrFutureDay annotation) {
	
}

@Override
public boolean isValid(Date date,
		ConstraintValidatorContext context) {

	Date atual = new Date(new GregorianCalendar().getTimeInMillis());

	System.out.println("Data atual:" + atual);
	System.out.println("Data digitada:" + date);
	System.out.println(date.before(atual));
	System.out.println(context.getDefaultConstraintMessageTemplate());
	return (!date.before(atual));
}[/code]

Classe Validada

[code]
@Entity
@Table(name=“Placa”)
public class Placa implements Serializable{

private static final long serialVersionUID = -2281062167675094359L;

@Id
@GeneratedValue
@Column(name="id")
private Long id;

@CurrentOrFutureDay(message="Data deve ser igual"
					+ " ou superior a data atual")
@Column(name="data_inicial", nullable=false)
private Date dataInicialDate;

// @Transient
// @Pattern(regexp="\d{1,2}/\d{1,2}/\d{4}",
// message=“Data com formato inválido”)
// private String dataInicial;

@Column(name="data_final", nullable=false)
private Date dataFinalDate;

// @Transient
// @Pattern(regexp="\d{1,2}/\d{1,2}/\d{4}",
// message=“Data com formato inválido”)
// private String dataFinal;

public void setDataInicial(String dataInicial) {
	this.dataInicialDate = DateUtil.StringToSqlDate(dataInicial);
}

public String getDataFinal() {
	if(dataFinalDate==null)
		return null;
	else
		return DateUtil.SqlDateToString(dataFinalDate);
}

public void setDataFinal(String dataFinal) {
	this.dataFinalDate = DateUtil.StringToSqlDate(dataFinal);
	}


public Date getDataInicialDate() {
	return dataInicialDate;
}


public void setDataInicialDate(String dataInicialDate) {
	this.dataInicialDate = DateUtil.StringToSqlDate(dataInicialDate);
}


public Date getDataFinalDate() {
	return dataFinalDate;
}


public void setDataFinalDate(String dataFinalDate) {
	this.dataFinalDate = DateUtil.StringToSqlDate(dataFinalDate);
}
}[/code]