Eu preciso gravar em uma tabela x do Banco de Dados um item que seleciono na minha JComboBox, que é alimentada a partir de um segunda tabela y. Meu código:
Método para popular o JComboBox
public NovaMatriz() {
initComponents();
CaracteristicasDAO dao = new CaracteristicasDAO();
for(Caracteristicas c: dao.read()){
cmbcaracteristicas.addItem(c);
}
}
Classe DAO
public List<Caracteristicas> read() {
try {
//1 passo - criar o vetor que vai armazenar os registros do banco
List<Caracteristicas> lista = new ArrayList<Caracteristicas>();
//2 passo - criar o comando sql
String cmdSql = "select * from caracteristicas";
PreparedStatement stmt = conecta.prepareStatement(cmdSql);
//3 passo - Guarda o resultado do select dentro do objeto RS (resultSet)
ResultSet rs = stmt.executeQuery();
//4 passo - Enquanto houver registros (resultado do select) guarde o registro na lista
while (rs.next()) {
Caracteristicas c = new Caracteristicas();
c.setCaracteristicas(rs.getString("caracteristicas"));
lista.add(c);
}
return lista;
} catch (SQLException erro) {
throw new RuntimeException(erro);
}
}
Classe Beans
public class Caracteristicas {
//atributos
private Integer idcaracteristica;
private String caracteristicas;
//getter e setter
public Integer getIdcaracteristica() {
return idcaracteristica;
}
public void setIdcaracteristica(Integer idcaracteristica) {
this.idcaracteristica = idcaracteristica;
}
public String getCaracteristicas() {
return caracteristicas;
}
public void setCaracteristicas(String caracteristicas) {
this.caracteristicas = caracteristicas;
}
@Override
public String toString() {
return getCaracteristicas(); //To change body of generated methods, choose Tools | Templates.
}
}
Botão salvar
try {
//botão salvar
//1 passo - guardar os dados da tela no obj matrizes
Matrizes obj = new Matrizes();
obj.setNumero(txtnumero.getText());
obj.setNome(txtnome.getText());
obj.setCaracteristicas((String) cmbcaracteristicas.getSelectedItem());
obj.setDatanascimento(txtdatanascimento.getText());
obj.setProprietario(txtproprietario.getText());
obj.setNomepai(txtnomepai.getText());
obj.setNomemae(txtnomemae.getText());
obj.setSituacao((String) cmbsituação.getSelectedItem());
//2 pass0 - criar objeto do tipo matrizesDAO
MatrizesDAO dao = new MatrizesDAO();
dao.cadastrarMatriz(obj);
JOptionPane.showMessageDialog(null, "Cadastro Realizado com Sucesso!");
} catch (Exception erro) {
System.out.println(erro);
JOptionPane.showMessageDialog(null, erro);
}
O problema é que quando eu vou salvar na tabela y o que foi selecionado no JComboBox aparece o seguinte erro:
java.lang.ClassCastException : JavaBeans.Caracteristicas cannot be cast to java.lang.String