Obter campos de uma tabela
06/01/2012 12:37
1
Olá pessoal,

Como posso obter só os campos de uma tabela.

Ex: Gostaria por exemplo obter os nomes dos campos da tabela produto,
algo do tipo: [ID, NOME, DESCRICAO]
Tags: gorm, sql,tabela


1
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")


1
Henrique,

Não daria para pegar esses campos pelo metaClass??.. acho que tem no seu terceiro video um exemplo que vc usa pra pegar o campos e os metodos de uma classe
06/01/2012 15:51


0
No caso, o metaClass é usado apenas para adicionar ou obter os atributos e métodos de uma classe.
E os atributos de uma classe de domínio não necessáriamente vão corresponder aos campos de uma tabela no banco de dados. Por exemplo: atributos transient, ou alguns dos atributos incluidos na classe pelo próprio GORM.

Neste caso, como são os campos da base de dados, teria de ser via JDBC mesmo. Agora, fuçando um pouquinho mais, não ficaria muito surpreso se encontrasse algo dentro da API do próprio Hibernate que nos forneça uma abstração ainda melhor. :)


0
Valeu pela ajuda Henrique! resolveu o problema!



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto