title: Hibernate not creating Table automatically in spring boot using postgresql
body: <p>I want to save data to a table in postgresql. I am using <code>spring boot</code> + <code>postgresql</code> along with <code>hibernate</code>. My Application does not have any error but it is not creating table in database. </p>
  
  <p>This is my controller class</p>
  
  <pre><code>    package com.ge.health.poc.controlleer;
  
      import java.io.IOException;
  
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.web.bind.annotation.RequestBody;
      import org.springframework.web.bind.annotation.RequestMapping;
      import org.springframework.web.bind.annotation.RequestMethod;
      import org.springframework.web.bind.annotation.ResponseBody;
      import org.springframework.web.bind.annotation.RestController;
  
      import com.fasterxml.jackson.core.JsonParseException;
      import com.fasterxml.jackson.databind.JsonMappingException;
      import com.fasterxml.jackson.databind.ObjectMapper;
      import com.ge.health.poc.model.Bookmodel;
      import com.ge.health.poc.service.BookServiceImplementation;
  
      @RestController
      public class HttpController {
  
          @Autowired
          BookServiceImplementation bookserviceimpl;
  
          @RequestMapping(value = "/httpmethod", method = RequestMethod.POST)
          @ResponseBody
          public void helloService(@RequestBody String input) throws JsonParseException, JsonMappingException, IOException {
              System.out.println(input);
              ObjectMapper mapper = new ObjectMapper();
              Bookmodel pojodata = mapper.readValue(input, Bookmodel.class);
  
              System.out.println(pojodata);
  
          }
      }
  </code></pre>
  
  <p>AppConfig.java</p>
  
  <pre><code>    package com.ge.health.poc.configuration;
  
      import java.util.Properties;
  
      import javax.annotation.Resource;
      import javax.jms.ConnectionFactory;
      import javax.sql.DataSource;
  
      import org.springframework.context.annotation.Bean;
      import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
      import org.springframework.jdbc.datasource.DriverManagerDataSource;
      import org.springframework.jms.core.JmsTemplate;
      import org.springframework.orm.jpa.JpaTransactionManager;
      import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
  
      public class AppConfig {
  
          @Resource
          private SettingConfig settings;
  
          @Bean
          JmsTemplate jmsTemplate(ConnectionFactory connectionFactory) {
              return new JmsTemplate(connectionFactory);
          }
  
          @Bean
          public DataSource dataSource() {
              DriverManagerDataSource dataSource = new DriverManagerDataSource();
              dataSource.setDriverClassName(settings.getDriverClassName());
              dataSource.setUrl(settings.getDatasource());
              dataSource.setUsername(settings.getUsername());
              dataSource.setPassword(settings.getPassword());
              return dataSource;
          }
  
          /**
           * Declare the JPA entity manager factory.
           */
          @Bean
          public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
              LocalContainerEntityManagerFactoryBean entityManagerFactory = new LocalContainerEntityManagerFactoryBean();
  
              // Hibernate properties
              Properties additionalProperties = new Properties();
              additionalProperties.put("hibernate.dialect", settings.getDialect());
              additionalProperties.put("hibernate.show_sql", settings.getShowsql());
              additionalProperties.put("hibernate.hbm2ddl.auto", settings.getDdlauto());
              entityManagerFactory.setJpaProperties(additionalProperties);
  
              return entityManagerFactory;
          }
  
          /**
           * Declare the transaction manager.
           */
          @Bean
          public JpaTransactionManager transactionManager() {
              JpaTransactionManager transactionManager = new JpaTransactionManager();
              transactionManager.setEntityManagerFactory(entityManagerFactory().getObject());
              return transactionManager;
          }
  
          /**
           * PersistenceExceptionTranslationPostProcessor is a bean post processor
           * which adds an advisor to any bean annotated with Repository so that any
           * platform-specific exceptions are caught and then rethrown as one Spring's
           * unchecked data access exceptions (i.e. a subclass of
           * DataAccessException).
           */
          @Bean
          public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
              return new PersistenceExceptionTranslationPostProcessor();
          }
      }
  </code></pre>
  
  <p>SettingConfig.java</p>
  
  <pre><code>    package com.ge.health.poc.configuration;
  
      import org.springframework.beans.factory.annotation.Value;
      import org.springframework.stereotype.Component;
  
      @Component
      public class SettingConfig {
  
          public String getDdlauto() {
              return ddlauto;
          }
  
          public void setDdlauto(String ddlauto) {
              this.ddlauto = ddlauto;
          }
  
          public String getShowsql() {
              return showsql;
          }
  
          public void setShowsql(String showsql) {
              this.showsql = showsql;
          }
  
          public String getDialect() {
              return dialect;
          }
  
          public void setDialect(String dialect) {
              this.dialect = dialect;
          }
  
          @Value("${spring.datasource.url}")
          private String datasource;
  
          @Value("${hibernate.hbm2ddl.auto}")
          private String ddlauto;
  
          @Value("${hibernate.show_sql}")
          private String showsql;
  
          @Value("{hibernate.dialect}")
          private String dialect;
  
          @Value("${spring.datasource.username}")
          private String username;
  
          @Value("${spring.datasource.password}")
          private String password;
  
          @Value("${spring.datasource.driver-class-name}")
          private String driverClassName;
  
          public String getDatasource() {
              return datasource;
          }
  
          public void setDatasource(String datasource) {
              this.datasource = datasource;
          }
  
          public String getUsername() {
              return username;
          }
  
          public void setUsername(String username) {
              this.username = username;
          }
  
          public String getPassword() {
              return password;
          }
  
          public void setPassword(String password) {
              this.password = password;
          }
  
          public String getDriverClassName() {
              return driverClassName;
          }
  
          public void setDriverClassName(String driverClassName) {
              this.driverClassName = driverClassName;
          }
  
      }
  </code></pre>
  
  <p>application.properties</p>
  
  <pre><code>    # Database
      spring.datasource.driver-class-name=org.postgresql.Driver
      spring.datasource.url=jdbc:postgresql://localhost:5432/bookdetails
      spring.datasource.username=postgres
      spring.datasource.password=admin
      # Hibernate
      hibernate.dialect=org.hibernate.dialect.MySQLDialect
      hibernate.show_sql=true
      hibernate.hbm2ddl.auto=create
  </code></pre>
  
  <p>POJO class</p>
  
  <pre><code>package com.ge.health.poc.model;
  
  import javax.persistence.Column;
  import javax.persistence.Table;
  
  import org.springframework.data.annotation.Id;
  import org.springframework.stereotype.Component;
  
  @Component
  @Table
  public class Bookmodel {
  
      @Id
      private String id;
      @Column
      private String name;
      @Column
      private String isbn;
      @Column
      private String author;
      @Column
      private String pages;
  
      public String getId() {
          return id;
      }
  
      public void setId(String id) {
          this.id = id;
      }
  
      public String getPages() {
          return pages;
      }
  
      public void setPages(String pages) {
          this.pages = pages;
      }
  
      @Override
      public String toString() {
          return "Bookmodel [id=" + id + ", name=" + name + ", isbn=" + isbn + ", author=" + author + ", pages=" + pages
                  + "]";
      }
  
      public String getName() {
          return name;
      }
  
      public void setName(String name) {
          this.name = name;
      }
  
      public String getIsbn() {
          return isbn;
      }
  
      public void setIsbn(String isbn) {
          this.isbn = isbn;
      }
  
      public String getAuthor() {
          return author;
      }
  
      public void setAuthor(String author) {
          this.author = author;
      }
  
  }
  </code></pre>
  
  <p>I want to save data to a table in postgresql.I am using spring boot + postgresql along with hibernate. My Application donot have any error but it is not creating table in database.</p>