title: Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Unable to execute schema management to JDBC target
body: <p>boot with spring data jpa. I using @OneToMany annotation as bidirectional. When i run this application first time its is giving the result as expected. But in second run it is trying to create the table again which is already present in the database. Changed the property of hbm2ddl.auto property to update, still facing the same issue.</p>
  
  <pre><code>Here is the exception that I am facing
  
  2017-06-02 10:51:59.145  INFO 1148 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate Core {5.0.12.Final}
  2017-06-02 10:51:59.147  INFO 1148 --- [           main] org.hibernate.cfg.Environment            : HHH000206: hibernate.properties not found
  2017-06-02 10:51:59.148  INFO 1148 --- [           main] org.hibernate.cfg.Environment            : HHH000021: Bytecode provider name : javassist
  2017-06-02 10:51:59.180  INFO 1148 --- [           main] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
  2017-06-02 10:51:59.261  INFO 1148 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect
  2017-06-02 10:51:59.649  INFO 1148 --- [           main] org.hibernate.tool.hbm2ddl.SchemaUpdate  : HHH000228: Running hbm2ddl schema update
  2017-06-02 10:51:59.662  INFO 1148 --- [           main] rmationExtractorJdbcDatabaseMetaDataImpl : HHH000262: Table not found: dept
  2017-06-02 10:51:59.664  INFO 1148 --- [           main] rmationExtractorJdbcDatabaseMetaDataImpl : HHH000262: Table not found: dept
  2017-06-02 10:51:59.673  WARN 1148 --- [           main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory
  2017-06-02 10:51:59.677  INFO 1148 --- [           main] o.apache.catalina.core.StandardService   : Stopping service Tomcat
  2017-06-02 10:51:59.686  INFO 1148 --- [           main] utoConfigurationReportLoggingInitializer : 
  
  Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
  2017-06-02 10:51:59.692 ERROR 1148 --- [           main] o.s.boot.SpringApplication               : Application startup failed
  
  org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
      at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
      at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
      at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
      at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
      at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1081) ~[spring-context-4.3.8.RELEASE.jar:4.3.8.RELEASE]
      at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:856) ~[spring-context-4.3.8.RELEASE.jar:4.3.8.RELEASE]
      at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) ~[spring-context-4.3.8.RELEASE.jar:4.3.8.RELEASE]
      at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]
      at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737) [spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]
      at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370) [spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]
      at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]
      at org.springframework.boot.SpringApplication.run(SpringApplication.java:1162) [spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]
      at org.springframework.boot.SpringApplication.run(SpringApplication.java:1151) [spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]
      at com.jilani.springdatajpa.SpringDataJpaApplication.main(SpringDataJpaApplication.java:33) [classes/:na]
  Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory
      at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:954) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
      at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:882) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
      at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60) ~[spring-orm-4.3.8.RELEASE.jar:4.3.8.RELEASE]
      at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:353) ~[spring-orm-4.3.8.RELEASE.jar:4.3.8.RELEASE]
      at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:370) ~[spring-orm-4.3.8.RELEASE.jar:4.3.8.RELEASE]
      at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:359) ~[spring-orm-4.3.8.RELEASE.jar:4.3.8.RELEASE]
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
      ... 16 common frames omitted
  Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Unable to execute schema management to JDBC target [create table dept (dept_no integer not null auto_increment, dept_loc varchar(255), dept_name varchar(255), primary key (dept_no))]
      at org.hibernate.tool.schema.internal.TargetDatabaseImpl.accept(TargetDatabaseImpl.java:59) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
      at org.hibernate.tool.schema.internal.SchemaMigratorImpl.applySqlString(SchemaMigratorImpl.java:431) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
      at org.hibernate.tool.schema.internal.SchemaMigratorImpl.applySqlStrings(SchemaMigratorImpl.java:420) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
      at org.hibernate.tool.schema.internal.SchemaMigratorImpl.createTable(SchemaMigratorImpl.java:236) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
      at org.hibernate.tool.schema.internal.SchemaMigratorImpl.doMigrationToTargets(SchemaMigratorImpl.java:167) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
      at org.hibernate.tool.schema.internal.SchemaMigratorImpl.doMigration(SchemaMigratorImpl.java:60) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
      at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:134) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
      at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:101) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
      at org.hibernate.internal.SessionFactoryImpl.&lt;init&gt;(SessionFactoryImpl.java:472) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
      at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
      at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:879) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
      ... 22 common frames omitted
  Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'dept' already exists
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_121]
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_121]
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_121]
      at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_121]
      at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) ~[mysql-connector-java-5.1.41.jar:5.1.41]
      at com.mysql.jdbc.Util.getInstance(Util.java:408) ~[mysql-connector-java-5.1.41.jar:5.1.41]
      at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:943) ~[mysql-connector-java-5.1.41.jar:5.1.41]
      at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973) ~[mysql-connector-java-5.1.41.jar:5.1.41]
      at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909) ~[mysql-connector-java-5.1.41.jar:5.1.41]
      at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527) ~[mysql-connector-java-5.1.41.jar:5.1.41]
      at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680) ~[mysql-connector-java-5.1.41.jar:5.1.41]
      at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2497) ~[mysql-connector-java-5.1.41.jar:5.1.41]
      at com.mysql.jdbc.StatementImpl.executeUpdateInternal(StatementImpl.java:1540) ~[mysql-connector-java-5.1.41.jar:5.1.41]
      at com.mysql.jdbc.StatementImpl.executeLargeUpdate(StatementImpl.java:2595) ~[mysql-connector-java-5.1.41.jar:5.1.41]
      at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1468) ~[mysql-connector-java-5.1.41.jar:5.1.41]
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121]
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121]
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121]
      at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121]
      at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114) ~[tomcat-jdbc-8.5.14.jar:na]
      at com.sun.proxy.$Proxy69.executeUpdate(Unknown Source) ~[na:na]
      at org.hibernate.tool.schema.internal.TargetDatabaseImpl.accept(TargetDatabaseImpl.java:56) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
      ... 32 common frames omitted
  ==================
  </code></pre>
  
  <p>This is my Spring Boot class</p>
  
  <pre><code>import java.util.List;   
  import javax.transaction.Transactional;    
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.boot.CommandLineRunner;
  import org.springframework.boot.SpringApplication;
  import org.springframework.boot.autoconfigure.SpringBootApplication;
  import org.springframework.boot.autoconfigure.domain.EntityScan;
  import org.springframework.context.annotation.ComponentScan;
  import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
  import com.jilani.springboot.model.Department;
  import com.jilani.springboot.model.Employee;
  import com.jilani.springboot.repository.DepartmentRepository;
  import com.jilani.springboot.repository.EmployeeRepository;
  
  @SpringBootApplication
  @ComponentScan({"com."})
  @EntityScan("com.jilani.springboot.model")
  @EnableJpaRepositories("com.jilani.springboot.repository")
  public class SpringDataJpaApplication implements CommandLineRunner {
  
      @Autowired
      DepartmentRepository deptRepository;
  
      @Autowired
      EmployeeRepository empRepository;
  
      public static void main(String[] args) {
          SpringApplication.run(SpringDataJpaApplication.class, args);
      }
  
      @Override
      public void run(String... arg0) throws Exception {
          clearData();
          saveData();
          showData();
      }
  
      @Transactional
      private void clearData() {
          deptRepository.deleteAll();
          empRepository.deleteAll();
      }
  
      @Transactional
      private void saveData() {
  
          Employee hrEmp = new Employee("Jilani1", 10001, "SE1");
          Employee hrEmp1 = new Employee("Rahul1", 20001, "SSE1");
  
          Employee itEmp = new Employee("Manju1", 30001, "AGM1");
          Employee itEmp1 = new Employee("Rahul1", 40001, "GM1");
  
          Department hrDept = new Department("HR1", "HYD1");
          Department itDept = new Department("IT1", "BNG1");
  
          hrEmp.setDept(hrDept);
          hrEmp1.setDept(hrDept);
  
          itEmp.setDept(itDept);
          itEmp1.setDept(itDept);
  
          hrDept.getEmployees().add(hrEmp);
          hrDept.getEmployees().add(hrEmp1);
  
          itDept.getEmployees().add(itEmp);
          itDept.getEmployees().add(itEmp1);
  
          deptRepository.save(hrDept);
          deptRepository.save(itDept);
  
          empRepository.save(hrEmp);
          empRepository.save(hrEmp1);
  
          empRepository.save(itEmp);
          empRepository.save(itEmp1);
  
      }
  
      @Transactional
      private void showData() {
          List&lt;Employee&gt; empList = empRepository.findAll();
          List&lt;Department&gt; deptList = deptRepository.findAll();
          System.out.println("===================Employee List:==================");
          empList.forEach(System.out::println);    
          System.out.println("===================Department List:==================");
          deptList.forEach(System.out::println);    
      }    
  }
  </code></pre>
  
  <p>This is one my Entities (Employee)</p>
  
  <pre><code>import java.io.Serializable;
  import java.util.Set;
  import javax.persistence.CascadeType;
  import javax.persistence.Column;
  import javax.persistence.Entity;
  import javax.persistence.FetchType;
  import javax.persistence.GeneratedValue;
  import javax.persistence.GenerationType;
  import javax.persistence.Id;
  import javax.persistence.JoinColumn;
  import javax.persistence.ManyToOne;
  import javax.persistence.Table;    
  import org.json.JSONObject;    
  import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
  
  @Entity
  @Table(name="employee")
  public class Employee implements Serializable {
  
      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      private int empId;
      private String empName;
      private double empSal;
      private String job;
      @ManyToOne(fetch = FetchType.EAGER)
      //@JoinColumn(name = "dept_no")
      private Department dept;
  
      public Employee() {
  
      }
  
      public Employee(String empName, double empSal, String job) {
          this.empName = empName;
          this.empSal = empSal;
          this.job = job;
      }
  
      public Employee(String empName, double empSal, String job, Department dept){
          this.empName = empName;
          this.empSal = empSal;
          this.job = job;
          this.dept = dept;
      }
  
      public int getEmpId() {
          return empId;
      }
  
      public void setEmpId(int empId) {
          this.empId = empId;
      }
  
      public String getEmpName() {
          return empName;
      }
  
      public void setEmpName(String empName) {
          this.empName = empName;
      }
  
      public double getEmpSal() {
          return empSal;
      }
  
      public void setEmpSal(double empSal) {
          this.empSal = empSal;
      }
  
      public String getJob() {
          return job;
      }
  
      public void setJob(String job) {
          this.job = job;
      }
  
      public Department getDept() {
          return dept;
      }
  
      public void setDept(Department dept) {
          this.dept = dept;
      }
  
      public String toString(){
          String info = "";
  
          JSONObject jsonInfo = new JSONObject();
          jsonInfo.put("name",this.empName);
  
          JSONObject deptObj = new JSONObject();
          deptObj.put("name", this.dept.getDeptName());
          jsonInfo.put("company", deptObj);
  
          info = jsonInfo.toString();
          return info;
      }
  
  }
  </code></pre>
  
  <p>This is another Entity (Department)</p>
  
  <pre><code>import java.io.Serializable;
  import java.util.HashSet;
  import java.util.Set;    
  import javax.persistence.CascadeType;
  import javax.persistence.Column;
  import javax.persistence.Entity;
  import javax.persistence.FetchType;
  import javax.persistence.GeneratedValue;
  import javax.persistence.GenerationType;
  import javax.persistence.Id;
  import javax.persistence.OneToMany;
  import javax.persistence.Table;    
  import org.json.JSONArray;
  import org.json.JSONObject;
  
  @Entity
  @Table(name="dept")
  public class Department implements Serializable {
  
      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      private int deptNo;
      private String deptName;
      private String deptLoc;
      @OneToMany(cascade = CascadeType.ALL, mappedBy = "dept", fetch = FetchType.EAGER)
      private Set&lt;Employee&gt; employees = new HashSet&lt;Employee&gt;();
  
      public Department() {
  
      }
  
      public Department(String deptName, String deptLoc) {
          this.deptName = deptName;
          this.deptLoc = deptLoc;
      }
  
      public Department(String deptName, String deptLoc, Set&lt;Employee&gt; employees){
          this.deptName = deptName;
          this.deptLoc = deptLoc;
          this.employees = employees;
      }
  
      public int getDeptId() {
          return deptNo;
      }
  
      public void setDeptId(int deptId) {
          this.deptNo = deptId;
      }
  
      public String getDeptName() {
          return deptName;
      }
  
      public void setDeptName(String deptName) {
          this.deptName = deptName;
      }
  
      public String getDeptLoc() {
          return deptLoc;
      }
  
      public void setDeptLoc(String deptLoc) {
          this.deptLoc = deptLoc;
      }
  
      public Set&lt;Employee&gt; getEmployees() {
          return employees;
      }
  
      public void setEmployees(Set&lt;Employee&gt; employees) {
          this.employees = employees;
      }
  
      public String toString(){
          String info = "";
          JSONObject jsonInfo = new JSONObject();
          jsonInfo.put("name",this.deptName);
  
          JSONArray empArray = new JSONArray();
          if(this.employees != null){
              this.employees.forEach(emp-&gt;{
                  JSONObject subJson = new JSONObject();
                  subJson.put("name", emp.getEmpName());
                  empArray.put(subJson);
              });
          }
          jsonInfo.put("products", empArray);
          info = jsonInfo.toString();
          return info;
      }
  
  }
  </code></pre>
  
  <p>Finally, this is my properties that are set in the config file</p>
  
  <pre><code>spring.datasource.url=jdbc:mysql://localhost:3306/mysql?useSSL=false
  spring.datasource.username=root
  spring.datasource.password=root     
  spring.jpa.generate-ddl=true
  spring.jpa.show-sql=true
  spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect    
  spring.jpa.hibernate.ddl-auto=update    
  server.port=9999
  </code></pre>