title: Could not execute JDBC batch update:Exception in thread "main" org.hibernate.exception.ConstraintViolationException:
body: <p>I am new to hibernate programming Please help me out, I have problem while executing the below  files.I am using MySQL Database. My error is </p>
  
  <blockquote>
    <p>SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
        SLF4J: Defaulting to no-operation (NOP) logger implementation
        SLF4J: See <a href="http://www.slf4j.org/codes.html#StaticLoggerBinder" rel="nofollow noreferrer">http://www.slf4j.org/codes.html#StaticLoggerBinder</a> for further details.
        Hibernate: insert into UserDetails (userName) values (?)
        Hibernate: insert into UserDetails (userName) values (?)
        Hibernate: insert into UserDetails (userName) values (?)
        Hibernate: insert into vehicle (vehiName) values (?)
        Hibernate: insert into vehicle (vehiName) values (?)
        Hibernate: insert into UserDetails_vehicle (UserDetails_userID, vehi_vehiID) values (?, ?)
        Hibernate: insert into UserDetails_vehicle (UserDetails_userID, vehi_vehiID) values (?, ?)
        Hibernate: insert into UserDetails_vehicle (UserDetails_userID, vehi_vehiID) values (?, ?)</p>
    
    <p>Exception in thread "main" org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:96)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:268)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:188)
        at                                          org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
        at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
        at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
        at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383)
        at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:133)
        at com.annt.java.UserTest.main(UserTest.java:34)
        Caused by: java.sql.BatchUpdateException: Duplicate entry '1' for key 'vehi_vehiID'
        at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1669)
        at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1085)
        at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
        ... 8 more</p>
  </blockquote>
  
  <h2>UserDetails.java</h2>
  
  <pre><code>@Entity
  public class UserDetails {
      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      private int userID;
      @OneToMany
      private List&lt;vehicle&gt; vehi = new ArrayList&lt;vehicle&gt;();
  
      public List&lt;vehicle&gt; getVehi() {
          return vehi;
      }
  
      public void setVehi(List&lt;vehicle&gt; vehi) {
          this.vehi = vehi;
      }
  
      public int getUserID() {
          return userID;
      }
  
      public void setUserID(int userID) {
          this.userID = userID;
      }
      private String userName;
  
      public String getUserName() {
          return userName;
      }
  
      public void setUserName(String userName) {
          this.userName = userName;
      }
  
  }
  </code></pre>
  
  <h2>vehicle.java</h2>
  
  <pre><code> @Entity
      public class vehicle {
  
          @Id
          @GeneratedValue
          private int vehiID;
  
          public int getVehiID() {
              return vehiID;
          }
  
          public void setVehiID(int vehiID) {
              this.vehiID = vehiID;
          }
  
          public String getVehiName() {
              return vehiName;
          }
  
          public void setVehiName(String vehiName) {
              this.vehiName = vehiName;
          }
          private String vehiName;
  
      }
  </code></pre>
  
  <h2>usertest.java</h2>
  
  <pre><code>public class UserTest {
  
      public static void main(String[] args) {
          vehicle veh1 = new vehicle();
          veh1.setVehiName("car");
          vehicle veh2 = new vehicle();
          veh2.setVehiName("bus");
          UserDetails user1 = new UserDetails();
          UserDetails user2 = new UserDetails();
          user1.setUserName("user2");
          user2.setUserName("user2");
          UserDetails user3 = new UserDetails();
          user3.setUserName("user3");
          user1.getVehi().add(veh1);
          user2.getVehi().add(veh2);
          user3.getVehi().add(veh1);
          SessionFactory sf = new Configuration().configure().buildSessionFactory();
          Session ss = sf.openSession();
          ss.beginTransaction();
          ss.save(user1);
          ss.save(user2);
          ss.save(user3);
          ss.save(veh1);
          ss.save(veh2);
          ss.getTransaction().commit();
          ss.close();
      }
  
  }
  </code></pre>