2016-10-18 2 views
0

Я пытаюсь подключиться от eclipse к postgresql (pg Admin III). Я получаю следующие ошибки.org.hibernate.exception.SQLGrammarException: не удалось извлечь ResultSet и ERROR: отношения «hibernate_sequence» не существует

Я пробовал каждую ссылку на stackoverflow и другие ссылки тоже. Многие из них заявили, что «потому что вы используете @GeneratedValue()».

У меня есть две таблицы имя "User" и "UserRole" в PostgreSQL и myhibernate.cfg.xml является: -

<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property> 
<property name="connection.driver_class">org.postgresql.Driver</property> 
<property name="connection.url">jdbc:postgresql://localhost:5432/shiroexample</property> 
<property name="connection.username">postgres</property> 
<property name="connection.password">root</property> 
<property name="connection.autoReconnect">true</property> 

<property name="cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property> 

<property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property> 
<property name="current_session_context_class">thread</property> 
<property name="hibernate.show_sql">false</property> 

<mapping class="com.jjoe64.shiroexample.models.User"></mapping> 
<mapping class="com.jjoe64.shiroexample.models.UserRole"></mapping> 
<mapping class="com.jjoe64.shiroexample.models.RolesPermission"></mapping> 

</session-factory> 

Ошибка на run.I я использую сервера Tomcat

> HTTP Status 500 - Filtered request failed. 
>  
>  -------------------------------------------------------------------------------- 
>  
>  type Exception report 
>  
>  message Filtered request failed. 
>  
>  description The server encountered an internal error that prevented it from fulfilling this request. 
>  
>  exception 
>  
>  javax.servlet.ServletException: Filtered request failed. 
>  org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:384) 
>  org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) 
>  
>  
>  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) 
>  org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) 
>  org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) 
>  org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:88) 
>  org.hibernate.id.SequenceGenerator.generateHolder(SequenceGenerator.java:122) 
>  org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:115) 
>  org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:117) 
>  org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:206) 
>  org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55) 
>  org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:191) 
>  org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49) 
>  org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) 
>  org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:683) 
>  org.hibernate.internal.SessionImpl.save(SessionImpl.java:675) 
>  org.hibernate.internal.SessionImpl.save(SessionImpl.java:671) 
>  com.jjoe64.shiroexample.RegisterServlet.registrate(RegisterServlet.java:102) 
>  com.jjoe64.shiroexample.RegisterServlet.doPost(RegisterServlet.java:65) 
>  javax.servlet.http.HttpServlet.service(HttpServlet.java:650) 
>  javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
>  org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
>  org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) 
>  org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) 
>  org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) 
>  org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) 
>  org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) 
>  org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) 
>  org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) 
>  
>  
>  root cause 
>  
>  org.postgresql.util.PSQLException: ERROR: relation "hibernate_sequence" does not exist 
>  Position: 17 
>  org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2453) 
>  org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2153) 
>  org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:286) 
>  org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:432) 
>  org.postgresql.jdbc.PgStatement.execute(PgStatement.java:358) 
>  org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:171) 
>  org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:119) 
>  org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:79) 
>  org.hibernate.id.SequenceGenerator.generateHolder(SequenceGenerator.java:122) 
>  org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:115) 
>  org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:117) 
>  org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:206) 
>  org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55) 
>  org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:191) 
>  org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49) 
>  org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) 
>  org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:683) 
>  org.hibernate.internal.SessionImpl.save(SessionImpl.java:675) 
>  org.hibernate.internal.SessionImpl.save(SessionImpl.java:671) 
>  com.jjoe64.shiroexample.RegisterServlet.registrate(RegisterServlet.java:102) 
>  com.jjoe64.shiroexample.RegisterServlet.doPost(RegisterServlet.java:65) 
>  javax.servlet.http.HttpServlet.service(HttpServlet.java:650) 
>  javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
>  org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
>  org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) 
>  org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) 
>  org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) 
>  org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) 
>  org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) 
>  org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) 
>  org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) 
>  
>  
>  note The full stack trace of the root cause is available in the Apache Tomcat/7.0.69 logs. 
>  
>  
>  -------------------------------------------------------------------------------- 
>  
>  Apache Tomcat/7.0.69 

Первоначально я думаю, что пользователь является ключевым словом reserve, но затем я использую User с «User», но ничего не работает для меня.

Если кто-нибудь может мне помочь ... !!

ответ

0
  • @GeneratedValue() используется для автоматического приращения. Позресы создают последовательности для использования автоматического увеличения.
  • Postgres чувствителен к регистру, имя последовательности должно быть одинаковым в вашем файле конфигурации.

установить имя последовательности вы можете увидеть here

Я надеюсь, что это поможет вам.

+0

Благодаря Ray.I заботиться о случае sensitivity.Could вы помочь мне в поиске <генератор класса = «последовательность»> <парам имя = «последовательность»> sequence_name в eclipse.I думаю изменение это поможет мне (поскольку я ищу в google), но я не нашел генераторный класс в любом месте. – saksham

+0

Я думаю, что имя последовательности задано в примере аннотации @GeneratedValue (strategy = GenerationType.SEQUENCE, generator = "hibernate_sequence") @SequenceGenerator (name = "hibernate_sequence", sequenceName = "hibernate_sequence", allocSize = 1) –