Oi Gabriel,
neste caso, você está precisando de algo um nível abaixo do Hibernate. Você pode trabalhar com JDBC direto nesta situação.
Tudo o que você precisa fazer é ter acesso direto a uma conexão JDBC. Há duas maneiras de fazer isto: via DataSource ou via SessionFactory.
Via dataSource, você vai ter de injetar o dataSource no seu serviço ou controlador, tal como no exemplo abaixo:
def dataSource
def seuMetodo {
def conexao = dataSource.getConnection()
}
Via SessionFactory, você vai precisar injetar o objeto sessionFactory no seu controlador e serviço e fazer como no exemplo abaixo:
def sessionFactory
def seuMetodo {
def conexao = sessionFactory.currentSession.connection()
}
Prefira a segunda opção, visto que ela garante que sua conexão vai estar no mesmo contexto transacional do seu controlador/serviço.
Feito isto, você já pode lidar com JDBC direto. Sugiro que você dê uma lida no Javadoc de duas classes do pacote java.sql padrão do Java. São elas:
* DatabaseMetaData: te da tudo sobre o seu banco de dados corrente da conexão
* ResultSetMetaData: te oferece tudo sobre uma consulta corrente. (um "select * qualquer")