ClassMetaData

2 respostas
fnandos

Pessoal eu tenho um problema, como eu faço para pegar os nomes das colunas da uma tabela do Oracle e utilizá - las numa consulta Criteria. Por exemplo eu tenho a Criteria

HibernateUtil.getCurrentSession().createCriteria(minhaClasse.class) .add(Restrictions.like("nomeDoCampo", "%" + filtro + "%"))

[color=green]filtro[/color] é o nome de um textfield no jsp, onde o usuário informa por exemplo o nome de um material, no lugar o nomeDoCampo eu precisava colocar o nome da coluna,tem como fazer isso, li que da pra usar a classe classMetaData para pegar os nomes dos campos, mas como faço isso?

2 Respostas

crpablo

Dá uma olhada, v c isso ajuda!!!

public List getNomeColunas(String nomeTabela) {

		List nomeColunas = new ArrayList();
		Statement stmt;
		ResultSet rsNomeColunas = null;
		ResultSetMetaData rsmd = null;
		int qtdColunas;

		try {
			stmt = getConnection().createStatement();
			rsNomeColunas = stmt.executeQuery("SELECT * FROM " + nomeTabela);
			rsmd = rsNomeColunas.getMetaData();

			qtdColunas = rsmd.getColumnCount();

			for (int i = 0; i < qtdColunas; i++) {
				nomeColunas.add(rsmd.getColumnName(i + 1));

			}

		} catch (SQLException e) {
			e.printStackTrace();
		}
		System.out.print("\n");
		return nomeColunas;
	}

[]'s

fnandos

Result set, OK, mas eu estava procurando uma maneira de fazer com a ClassMetaData do hibernate, algo do tipo

ClassMetadata metaData = HibernateUtil.sessionFactory.getClassMetadata(minhaClasse.class); String[] propName = metaData.getPropertyNames();

So fui até ai, alguém tem alguma ideia que pode me ajudar?

Criado 18 de fevereiro de 2008
Ultima resposta 18 de fev. de 2008
Respostas 2
Participantes 2