Dismiss
Announcing Stack Overflow Documentation

We started with Q&A. Technical documentation is next, and we need your help.

Whether you're a beginner or an experienced developer, you can contribute.

Sign up and start helping → Learn more about Documentation →

I want to save data to a table in postgresql. I am using spring boot + postgresql along with hibernate. My Application does not have any error but it is not creating table in database.

This is my controller class

    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);

        }
    }

AppConfig.java

    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();
        }
    }

SettingConfig.java

    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;
        }

    }

application.properties

    # 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

POJO class

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;
    }

}

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.

share|improve this question
    
In your hibernate.hbm2ddl.auto, set it to update . Also, if you have Postgresql, why are you using MySQl dialect, go PostgreSQL9Dialect. – We are Borg Feb 15 at 13:51
    
I tried that its not working – Priyanka Taneja Feb 15 at 13:53
    
org.hibernate.dialect.PostgreSQLDialect I am using this dialect now but still not creating table – Priyanka Taneja Feb 15 at 13:56
    
can you post your hibernate.cfg.xml file? – rD. Feb 15 at 14:09
    
Post the updated code by editing your main post. Also, what columns you added in Model? And as Raman said, can you post hibernate.cfg.xml. – We are Borg Feb 15 at 14:09

You are "using" Spring Boot and the first thing you do is try very hard not to use Spring Boot.

Instead of doing all the configuration by yourself let Spring Boot do the heavy lifting for you.

In your application.properties set the proper dialect and use the correct properties (see this section of the Spring Boot Reference Guide for a full list of properties).

# 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
spring.jpa.database=org.hibernate.dialect.PostgreSQL94Dialect
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create

And remove your custom configuration (i.e. the AppConfig and SettingConfig) that breaks the auto configuration of Spring Boot.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.