Hsqldb - problema com select

Pessoal,

Estou com dificuldades em retornar uma lista de valores de determinada coluna do banco de dados hsqld. O método do jdbc que faz a consulta ao banco é:

public List getRegisterEntityList() throws Exception { String sql = "SELECT entityName FROM register"; return this.getManyByCriteria(sql); }

Mas, se eu altero o método para:

public List getRegisterEntityList() throws Exception { String sql = "SELECT * FROM register"; return this.getManyByCriteria(sql); }

Retorna a lista com todos os registros, sem problemas.

Qual o problema?

Agradeço desde já!
Gustavo

Tenta isso:

public List getRegisterEntityList() throws Exception {  
    String sql = "SELECT \"entityName\" FROM register";  
    return this.getManyByCriteria(sql);  
}  

renato,

Obrigado pela ajuda! Eu descobri qual é o problema… construí minha entidade com apenas 2 construtores, um default e um com todos os campos da tabela! O método getManyByCriteria(String sql) prevê apenas o objeto com todos as colunas, por isso o “SELECT * FROM …” funciona e o “SELECT entidade FROM …”, não.

O getManyByCriteria(String sql) é assim:

[code]protected List getManyByCriteria(String sql) throws AnamanException {
Connection conn = getConnection();
Statement st = null;
ResultSet rs = null;
List aList = new ArrayList();
try {
st = conn.createStatement();
rs = st.executeQuery(sql);
while (rs.next()) {
AnamanRegister anamanRegister = new AnamanRegister(
rs.getInt(“idRegister”),
rs.getString(“registerEntity”),
rs.getString(“registerType”),
rs.getString(“registerRef”),
rs.getString(“registerArea”),
rs.getString(“registerApp”),
rs.getString(“registerDesc”),
rs.getString(“registerCode”));
aList.add(anamanRegister);
}
return aList;

	}
	catch (Exception e) {
		throw new AnamanException(
				"[AnamanRegisterDAO - getManyByCriteria] : Handled Exception ",
				e.getCause());
	} 
	finally {
		closeResources(conn, st, rs);
	}
}[/code]

Vou tentar duas abordagens.

  1. alterar o getManyByCriteria(String sql) e passar além da query (sql) algum tipo de instrução de como montar o objeto ResultSet - possivelmente mais demorado de fazer, mas com grande possibilidade enxugar código!

  2. colocar o getManyByCriteria(String sql) em cada uma das consultas, tornando esse método bem especializado.

De qualquer forma tenho que criar diferentes construtores para as entidades…

Longa noite de trabalho pela frente!

Obrigado!

Ok, o lance das aspas é porque sem elas o hsqldb converter para maiúsculo, pensei que fosse esse o problema.

Agora uma curiosidade, como você consegue gravar os registros no disco? Quando eu tentei usar ele só mantinha os dados na memória, tentei o shutdown=true na string de conexão mas não funcionava…