Hibernate postgresql的SpringMVC4Java上下文配置错误

Hibernate postgresql的SpringMVC4Java上下文配置错误,hibernate,postgresql,spring-mvc,Hibernate,Postgresql,Spring Mvc,我正在使用 春季4.0.3 休眠4.3.5 在相同的代码中,mysql工作得很好。但当我试图连接到PostgreSQL时,我出错了。我有正确的用户、数据库、创建的表和适当的权限。我不确定上下文配置。以下是配置:- @Configuration @ComponentScan("com.fnx.reg") @PropertySource("classpath:application.properties") @EnableTransactionManagement public class Appl

我正在使用

春季4.0.3 休眠4.3.5

在相同的代码中,mysql工作得很好。但当我试图连接到PostgreSQL时,我出错了。我有正确的用户、数据库、创建的表和适当的权限。我不确定上下文配置。以下是配置:-

@Configuration
@ComponentScan("com.fnx.reg")
@PropertySource("classpath:application.properties")
@EnableTransactionManagement
public class ApplicationContextConfig {

    @Resource
    private Environment env;

    @Bean(name = "viewResolver")
    public InternalResourceViewResolver getViewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/views/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }

    @Bean(name = "dataSource")
    public DataSource getDataSource() {
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName("org.postgresql.Driver");
        dataSource.setUrl("jdbc:postgresql://localhost:5432/test");
        dataSource.setUsername("dev");
        dataSource.setPassword("dev");

        return dataSource;
    }

    private Properties getHibernateProperties() {
        Properties properties = new Properties();
        properties.put("hibernate.show_sql", "true");
        properties.put("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
        return properties;
    }    

    @Autowired
    @Bean(name = "sessionFactory")
    public SessionFactory getSessionFactory(DataSource dataSource) {
        LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(dataSource);
        sessionBuilder.addProperties(getHibernateProperties());
        sessionBuilder.addAnnotatedClasses(User.class);
        return sessionBuilder.buildSessionFactory();
    }

    @Autowired
    @Bean(name = "transactionManager")
    public HibernateTransactionManager getTransactionManager(SessionFactory sessionFactory) {
        HibernateTransactionManager transactionManager = new HibernateTransactionManager(sessionFactory);

        return transactionManager;
    }

    @Autowired
    @Bean(name = "userDao")
    public UserDAO getUserDao(SessionFactory sessionFactory) {
        return new UserService(sessionFactory);
    }

    @Bean
    public ResourceBundleMessageSource messageSource() {
        ResourceBundleMessageSource source = new ResourceBundleMessageSource();
        source.setBasename(env.getRequiredProperty("message.source.basename"));
        source.setUseCodeAsDefaultMessage(true);
        return source;
    }    
}
例外情况:-

HTTP Status 500 - Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet

type Exception report

message Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:973)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:644)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

org.hibernate.exception.SQLGrammarException: could not extract ResultSet
    org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:123)
    org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
谷歌搜索后,在实体列名(例如
@column(name=“my_column”)
)和实际数据库列名(例如
my_col
)之间


如果无法将
my_column
映射到现有列,则可能会出现异常。

“org.hibernate.exception.sqlgrammareexception”似乎表明在模糊处理层(又称hibernate)生成的SQL语句中存在错误,您将hibernate.show_SQL设置为true。您能显示导致问题的生成的sql吗?Postgresql很麻烦。您可能需要检查列/实体名称。它们可能不匹配。即,列的大小写应为小写。谷歌搜索类似问题