Org.hibernate.AssertionFailure: scrollable result sets are not enabled

Eu estou usando hibernate with oracle and tenho o seguinte trecho de código:

ScrollableResults results = criteria.scroll(ScrollMode.SCROLL_SENSITIVE);

Quando eu executo o trecho acima tenho a seguinte exceção:

org.hibernate.AssertionFailure: scrollable result sets are not enabled

Estou usando hibernate 3.2.2.ga e oracle 10g

Alguem pode me ajudar? Como posso resolver esse problema?

Victor Lindberg

Já resolvi o problema.

É só setar a para true a propriedade hibernate.jdbc.use_scrollable_resultset no hibernate.cfg.xml como descrito abaixo:

Victor Lindberg

Bom dia galera do GUJ!
Desculpe reabrir este tópico que vai fazer aniversário mês que vem, mas estamos passando pelo mesmo problema e eu queria ter certeza que a solução fornecida pelo colega vai resolver.

Nós usamos as duas linhas abaixo para paginar consultas:ScrollableResults sr = query.scroll(); sr.last();e tudo funciona normalmente. Só que eventualmente, quando a rede cai e o banco de dados é reiniciado, ao fazer consultas paginadas dá o erro de “org.hibernate.AssertionFailure: scrollable result sets are not enabled”. Aí a gente tem que reiniciar o tomcat com a aplicação pra voltar a funcionar normalmente.

Tentando usar o hibernate.jdbc.use_scrollable_resultset, eu gerei um war sem esta linha para tentar replicar o erro e outro com a linha, para ver se tentando replicar o erro ele deixa de acontecer. Só que agora nós tentamos replicar a queda do banco e a aplicação sem o erro não deu nenhum problema.

Então eu pensei em inserir o hibernate.jdbc.use_scrollable_resultset assim mesmo, acreditando que ele vai resolver o erro, mesmo que não saibamos agora com 100% de certeza se é proveniente da queda do banco “sujando” a conexão.

Queria saber se inserindo esta linha o hibernate adquire algum comportamente indesejado pro meu sistema, alguma perda de performance ou amarração ao JDBC, ou se ele só diz que ScrollableResults está habilitado e meu problema acabará.

Mesmo porque, a resposta do colega foi postada no dia da mentira, por isso eu não acredito nela kkkk
Rs, to brincando ^^

É isso aí, quem puder me ajudar eu fico grata!
Abraços!

Puxa vida…
Ninguém sabe me dizer ao menos se a configuração abaixo vai resolver meu problema sem afetar o desempenho do meu hibernate? Por favor… To precisando disso…
Obrigada a todos mais uma vez

Estou com este mesmo problema, intermitente. Estou usando o hibernate (SEAM) com DB2. Temos várias instâncias WEB em execução. Eventualmente uma começa a lançar a exception:

...
Caused by: org.hibernate.AssertionFailure: scrollable result sets are not enabled
	at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:504)
	at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:452)
...

Esta assertion está assim no código do hibernate (classe org.hibernate.jdbc.AbstractBatcher):

...
  495   	private PreparedStatement getPreparedStatement(
  496   			final Connection conn,
  497   	        String sql,
  498   	        boolean scrollable,
  499   	        final boolean useGetGeneratedKeys,
  500   	        final String[] namedGeneratedKeys,
  501   	        final ScrollMode scrollMode,
  502   	        final boolean callable) throws SQLException {
  503   		if ( scrollable && !factory.getSettings().isScrollableResultSetsEnabled() ) {
  504   			throw new AssertionFailure("scrollable result sets are not enabled");
  505   		}
  506
...

Então por alguma razão o factory.getSettings().isScrollableResultSetsEnabled() está retornando [color=red] FALSE[/color].

Tentei incluir a propriedade:

<property name="hibernate.jdbc.use_scrollable_resultset" value="true" /> 

no persistence.xml do SEAM mas ainda aconteceu o problema em uma das instâncias…

Vou dar uma nova verificada mas o problema ainda inexplicável está ocorrendo :roll:

Tudo de bom,
João Paulo Limberger

Só para atualizar…

Faltou alterar os persistence.xml de alguns projetos, então o problema deixou de ocorrer.

Muito estranho é o fato de ter acontecido, pois o factory.getSettings().isScrollableResultSetsEnabled() recebe seu valor a partir dos Meta Dados do GBD, logo nada justifica a intermitência, então existe um BUG em algum lugar :!:

Tudo de bom,
jp