title: Problems with hibernate validator- javax.persistence.RollbackException (spring)
body: <p>I tried to insert validation into my maven project, but after that my project won't work anymore. Here is my code:</p>
  
  <p>My entity class:</p>
  
  <pre><code>    @Table(name="Kandidati")
  public class Candidate {
      @Id
      @Column(nullable=false)
      @Size(min=13, max=13, message="JMBG mora imati 13 karaktera! ")
      private String upn;
  
      @Size(min=2, message="Ime mora imati najmanje 2 slova! ")
      @Column(nullable=false)
      private String name;
  
      @Column(nullable=false)
      @Size(min=3, message="Prezime mora imati najmanje 3 slova! ")
      private String surname;
  
      @NotNull
      @Size(min=4, max=4, message="Godina mora imati 4 broja! ")
      private int year;
  
      @Email(message="Greska! Email adresa nije validna!")
      @Column(nullable=false)
      private String email;
  
      @Column(nullable=false)
      @Size(min=8, message="Telefon mora imati najmanje 8 karaktera! ")
      private String telephone;
  
      @Column(length=255)
      private String comment;
  
      @Size(min=2, max=2, message="Podatak treba da ima tacno 2 karaktera! ")
      @Column(nullable=false)
      private String hired;
  </code></pre>
  
  <p>Ofcourse, there are getters and setters also, then in my .jsp page I put</p>
  
  <pre><code>            &lt;form:errors path="name"&gt;&lt;/form:errors&gt;
  </code></pre>
  
  <p>for every attribute, in dispatcher-servlet.xml I put </p>
  
  <pre><code>    &lt;mvc:annotation-driven/&gt;
  </code></pre>
  
  <p>In my CandidateController class I have:</p>
  
  <pre><code>@RequestMapping(value="/kandidati", method=RequestMethod.POST)
      public String doRegister(@Valid @ModelAttribute("candidate") Candidate candidate, BindingResult result) {
          if (result.hasErrors()) {
              return "newCandidate";
  
          }
          candidateService.save(candidate);
          return "newCandidate";
      }
  </code></pre>
  
  <p>When I launch the application with Tomcat, I get this error:</p>
  
  <pre><code>SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
  org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'candidateService': Invocation of init method failed; nested exception is org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Error while committing the transaction
          at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136)
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:408)
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1558)
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
          at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
          at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
          at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
          at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
          at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:762)
          at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
          at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
          at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
          at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
          at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
          at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4772)
          at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5196)
          at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
          at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
          at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399)
          at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
          at java.util.concurrent.FutureTask.run(FutureTask.java:166)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
          at java.lang.Thread.run(Thread.java:724)
  Caused by: org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Error while committing the transaction
          at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:526)
          at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:757)
          at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:726)
          at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:515)
          at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:291)
          at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
          at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
          at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)
          at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
          at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodIntercceptor.invoke(CrudMethodMetadataPostProcessor.java:122)
          at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
          at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
          at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
          at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
          at com.sun.proxy.$Proxy37.save(Unknown Source)
          at BP.service.CandidateService.init(CandidateService.java:35)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          at java.lang.reflect.Method.invoke(Method.java:606)
          at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:349)
          at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:300)
          at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:133)
          ... 24 more
  Caused by: javax.persistence.RollbackException: Error while committing the transaction
          at org.hibernate.jpa.internal.TransactionImpl.commit(TransactionImpl.java:94)
          at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:517)
          ... 46 more
  Caused by: javax.validation.UnexpectedTypeException: HV000030: No validator could be found for type: java.lang.Integer.
          at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorManager.verifyResolveWasUnique(ConstraintValidatorManager.java:218)
          at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorManager.findMatchingValidatorClass(ConstraintValidatorManager.java:193)
          at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorManager.getInitializedValidator(ConstraintValidatorManager.java:97)
          at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:125)
          at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:91)
          at org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:84)
          at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:525)
          at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:465)
          at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:429)
          at org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:381)
          at org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:184)
          at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.validate(BeanValidationEventListener.java:137)
          at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.onPreInsert(BeanValidationEventListener.java:95)
          at org.hibernate.action.internal.EntityInsertAction.preInsert(EntityInsertAction.java:218)
          at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:97)
          at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:463)
          at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:349)
          at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:350)
          at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:56)
          at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1222)
          at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:425)
          at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
          at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:177)
          at org.hibernate.jpa.internal.TransactionImpl.commit(TransactionImpl.java:77)
          ... 47 more
  </code></pre>
  
  <p>Can anyone tell me where I made a mistake? </p>