Galera,
Estou me deparando com um erro que eu não consegui resolver. Pesquisei no Google e aqui no fórum mas nao achei nada que pudesse me ajudar. Estou testes unitários em uma classe e quando coloco para rodar me deparo com o seguinte erro:
01/06/2011 20:11:05 nst.controlenst.persistence.dao.obj.impl.JDBCProjeto save
GRAVE: null
org.postgresql.util.PSQLException: Não pode inferir um tipo SQL a ser usado para uma instância de nst.controlenst.model.entity.Situacao. Use setObject() com um valor de Types explícito para especificar o tipo a ser usado.
Gostaria de uma força de vcs para asoluçao desse problema. É a primeira vez que eu uso PostGree e estou levando essa surra. Agradeço desde já.
Meu código fonte está assim:
@Test
public void testUpdate() {
System.out.println("update");
Projeto projeto = new Projeto();
Timestamp tm = new Timestamp(System.currentTimeMillis());
projeto.setId(2);
projeto.setDataCadastro(tm);
projeto.setDataEncerramento(tm);
projeto.setDataEncerramentoPrevisto(tm);
projeto.setDataInicio(tm);
projeto.setDescricao("Descricao nova");
projeto.setIdentificador("teste");
projeto.setNome("Teste do nome");
Situacao situacao = new Situacao();
situacao.setId(5);
projeto.setSituacao(situacao);
projeto.setTipo(JDBCTipo.getInstance().getByPrimaryKey(1));
instance.save(projeto);
}
@Override
public void save(Projeto projeto) {
if (projeto.getId() == null || projeto.getId() == 0) {
try {
executarComando(SQL_ADD_PROJETOS, projeto.getIdentificador(),
projeto.getDataCadastro(),
projeto.getDataInicio(),
projeto.getDataEncerramentoPrevisto(),
projeto.getDataEncerramento(),
projeto.getDescricao(),
projeto.getSituacao().getId(),
projeto.getTipo().getId(),
projeto.getNome());
} catch (SQLException ex) {
Logger.getLogger(JDBCProjeto.class.getName()).log(Level.SEVERE, null, ex);
}
}else{
try {
executarComando(SQL_UPD_PROJETOS, projeto.getIdentificador(),
projeto.getDataCadastro(),
projeto.getDataInicio(),
projeto.getDataEncerramentoPrevisto(),
projeto.getDataEncerramento(),
projeto.getDescricao(),
projeto.getSituacao(),
projeto.getTipo(),
projeto.getNome(),
projeto.getId());
} catch (SQLException ex) {
Logger.getLogger(JDBCProjeto.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public abstract class GenericJDBCDAO {
protected abstract Object preencherEntidade(ResultSet rs) throws SQLException;
public Statement getStatement() throws SQLException {
return (Statement) ConnectionJDBC.getConnection().createStatement();
}
public PreparedStatement getStatement(String sql) throws SQLException {
return ConnectionJDBC.getConnection().prepareStatement(sql);
}
public ResultSet executarQuery(String query, Object... params) throws SQLException {
PreparedStatement ps = getStatement(query);
for (int i = 0; i < params.length; i++) {
ps.setObject(i + 1, params[i]);
}
return ps.executeQuery();
}
public int executarComando(String query, Object... params) throws SQLException {
PreparedStatement ps = getStatement(query);
for (int i = 0; i < params.length; i++) {
ps.setObject(i + 1, params[i]);
}
int result = ps.executeUpdate();
ps.close();
return result;
}
}
public class Situacao implements Serializable {
private Integer id;
private String descricao;
public Situacao() {
}
public Situacao(Integer id, String descricao) {
this.id = id;
this.descricao = descricao;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}