title: Give SQL exception when try to auto generate the id
body: <p>I can insert data without generate the id,But when it is generated it is not working</p>
  
  <p>My Entity class</p>
  
  <pre><code>@Entity
  public class User {
  
      long id;
      String name;
  
      @Id
      @GeneratedValue(strategy=GenerationType.IDENTITY)
      public long getId() {
          return id;
      }
      public void setId(long id) {
          this.id = id;
      }
      public String getName() {
          return name;
      }
      public void setName(String name) {
          this.name = name;
      }
  
  
  }
  </code></pre>
  
  <p>Code where I try to insert data</p>
  
  <pre><code>    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
      public void addUser(){
  
           User user=new User();
           user.setName("Sanja ela");
           userDao.save(user);
           System.out.println("elane");
  
      }
  </code></pre>
  
  <p>And the Exception</p>
  
  <pre><code> javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not execute statement
      at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387)
      at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310)
      at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1316)
      at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:881)
      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.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:241)
      at com.sun.proxy.$Proxy12.persist(Unknown Source)
      at com.sanja.test.myDao.impl.UserDaoImpl.save(UserDaoImpl.java:20)
      at com.sanja.test.myService.App.addUser(App.java:36)
      at com.sanja.test.myService.App$$FastClassByCGLIB$$3c8037a4.invoke(&lt;generated&gt;)
      at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
      at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:698)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
      at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
      at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)
      at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
      at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:631)
      at com.sanja.test.myService.App$$EnhancerByCGLIB$$cd9d01ed.addUser(&lt;generated&gt;)
      at com.sanja.test.myService.App.main(App.java:27)
  Caused by: org.hibernate.exception.GenericJDBCException: could not execute statement
      at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54)
      at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
      at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
      at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:136)
      at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:96)
      at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:58)
      at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2966)
      at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3477)
      at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:81)
      at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:362)
      at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:203)
      at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:183)
      at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:167)
      at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:321)
      at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:286)
      at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:192)
      at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:125)
      at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:78)
      at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:208)
      at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:151)
      at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:78)
      at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:852)
      at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:826)
      at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:830)
      at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:875)
      ... 19 more
  Caused by: java.sql.SQLException: Field 'id' doesn't have a default value
      at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
      at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
      at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3558)
      at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3490)
      at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
      at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2109)
      at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2643)
      at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2077)
      at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2362)
      at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2280)
      at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2265)
      at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:133)
      ... 40 more
  </code></pre>