Se você estiver executando a consulta no contexto de uma transação, o valor do tempo limite da transação do monitor de transações JTA será o determinante para o tempo limite da consulta. A configuração para isso depende de um servidor de aplicativos para outro.
Em um nível de consulta individual (na ausência de um monitor de transação JTA), o setQueryTimeout pode ser usado para definir o tempo limite na execução de um objeto Statement/PreparedStatement/CallableStatement.
Atualizar
setQueryTimeout não é confiável, embora funcione (pelo menos a partir de um cliente J2SE). Ele funciona por meio do driver JDBC realizando uma viagem de ida e volta completa para o servidor de banco de dados Oracle. Então, cabe ao banco de dados interromper a execução da consulta. Não confie nele para aplicações críticas em termos de tempo.