2015-01-07 1 views
0

Я используюSpring MVC 4 ява контекст конфигурации для ошибки PostGreSQL

пружинный 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) 
+0

"* org.hibernate.exception.SQLGrammarException *", как представляется, указывает на то, что в выражении SQL имеется ошибка, вызванная созданием слоя обфускации (aka Hibernate) –

+0

У вас установлено hibernate.show_sql значение true. Можете ли вы показать сгенерированный sql, который вызывает проблему? – ConMan

+0

Postgresql хлопотно. Возможно, вам придется проверять имена столбцов/сущностей. Они могут не совпадать. т. е. случай столбца должен быть строчным. Google это для аналогичных проблем – Zeus

ответ

0

После его, прибегая к помощи it may be caused by some mismatch между именем столбца объекта (например, @Column(name="my_column")) и фактическим именем столбца базы данных (например, my_col).

Если my_column не может быть сопоставлен с существующим столбцом, вы можете получить исключение как таковое.

Смежные вопросы