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:
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);
}
}
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!