Problema Hibernate lock em tabela e controle de transação

Pessoal, bom dia…

Estou com problema de lock ao realizar queries (HQL) com o Hibernate. Sempre que faço uma query, mesmo sem abrir transacao, o banco aponta lock de registros. Alguem já passou por isso ? Quando pego uma lista com 100 registros, por exemplo, todos ficam em estado de lock até que a session seja fechada.

Estou utilizando o Banco Adabas. Como não encontrei Dialeto para esse banco, peguei o dialeto do Oracle (pelo que percebi tem a sintaxe mais proxima) e fiz alguns ajustes. A conexao é gerenciada pelo Tomcat.

Tanto o AdabasDialect quanto o hibernate.cfg.xml estão o mais simples possivel.

Me disseram que talvez eu tivesse que usar org.hibernate.transaction.JTATransactionFactory, alguem sabe como posso usar essa classe ???

Exemplo de Consulta (CidadeDAO.java):

public ArrayList <CidadeBean> getListaSincronizar(SiteBean site) throws E EmpresaException {

		ArrayList<CidadeBean> listaRetorno = new ArrayList<CidadeBean>();		
		Session session = null;
		
		try { 
			
			StringBuffer hql = new StringBuffer("select c from CidadeBean c ");
		    hql.append("where c.codigoMatrizGrupo = ? ");
		    hql.append("  and rowno <= ").append(paginaAtual * linhasPorPagina);

			hql.append("order by c.codigoMatrizGrupo, c.codigo");
			
			session = HibernateUtil.getSession();
			
			Query query = session.createQuery(hql.toString())
						.setReadOnly(true)						
						.setTimeout(60)
						.setInteger(0, site.getCodigoMatrizGrupo())
						.setFirstResult(((paginaAtual - 1) * linhasPorPagina));

			
			List lista = query.list();
			if (lista != null && lista.size() > 0) {
				listaRetorno = (ArrayList<CidadeDBBean>) lista;
			}			

		} catch(Exception e) {
			
			throw new EmpresaException(DBPropriedades.CONSTANT_VALUE_SISTEMA,this.getClass().getName()+".getListaSincronizar()","99","Erro ao localizar Cidade: "+ e.getMessage());

		} finally {		  

			try {
				if (session != null) {
					session.disconnect();
					session.close();					
				}
			} catch (Exception ex) {}
			}
		}
		return listaRetorno;
	}

AdabasDialect:

public class AdabasDialect extends Dialect {

	public AdabasDialect() {
		
		super();

		registerDefaultProperties();
		
	}

	protected void registerDefaultProperties() {
		getDefaultProperties().setProperty( Environment.USE_STREAMS_FOR_BINARY, "true" );
		
		getDefaultProperties().setProperty(Environment.STATEMENT_BATCH_SIZE, NO_BATCH);		
		
		// Oracle driver reports to support getGeneratedKeys(), but they only
		// support the version taking an array of the names of the columns to
		// be returned (via its RETURNING clause).  No other driver seems to
		// support this overloaded version.
		getDefaultProperties().setProperty( Environment.USE_GET_GENERATED_KEYS, "false" );
		
	}

Hibernate.cfg.xml:

[code]<?xml version="1.0" encoding="UTF-8"?>

<session-factory>

	<!-- Use a Tomcat 5.5 JNDI datasource -->
	<property name="hibernate.dialect"> br.com.empresa.hibernate.dialect.AdabasDialect </property>
	
	<property name="hibernate.connection.datasource">java:comp/env/jdbc/Adabas</property>

	
	<property name="connection.autocommit">false</property>
	

	<!-- XML mapping -->
	<mapping	resource="br/com/empresa/bean/map/CidadeBean.hbm.xml" />

[/code]

Olá Thiago, estou com o mesmo problema que você e isto está me dando muita dor de cabeça, conseguiu resolver?

Olá Thiago, estou penando para achar uma referencia de conexao com Adabas via hibernate para implementar uma persistencia de dados e vi que você tem uma preciosidade ai neste código.
Pode me enviar algo mais sobre persistencia do Adabas em hibernate e JPA?
Lhe serei muito grato.