bom dia, alguém poderia me auxiliar?
preciso recuperar os dados de uma Jcombobox, estou usando MVC + DAO
minha classe Pessoa Model:
package Model;
public abstract class Pessoa {
//atributos
private int idPessoa;
private String nome;
private String cpf;
private String email;
private String dt_nascimento;
//getter and setters
public int getIdPessoa() {
return idPessoa;
}
public void setIdPessoa(int idPessoa) {
this.idPessoa = idPessoa;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getDt_nascimento() {
return dt_nascimento;
}
public void setDt_nascimento(String dt_nascimento) {
this.dt_nascimento = dt_nascimento;
}
@Override
public String toString() {
return getNome();
}
}
minha DAO que pesquisa pessoas do banco de dados:
package DAO;
import Model.Login;
import Model.Pessoa;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class LoginDAO {
Login dados = new Login();
//instanciando classe de conexão, chamando o metodo getConexao
Connection conn = ConexaoDAO.getConexao();
//preparar e proteger os dados
PreparedStatement stmt = null;
//organizar para exibir dados
ResultSet rs = null;
//metodo para validar login
public boolean validar(String login, String senha){
dados.setEmail(login);
dados.setLogin(login);
dados.setSenha(senha);
boolean retorno = false;
try {
stmt = conn.prepareStatement("SELECT * FROM login WHERE login = ? AND senha = ?");
stmt.setString(1, login);
stmt.setString(2, senha);
rs = stmt.executeQuery();
if (rs.next()){
retorno = true;
}
} catch (SQLException e) {
System.out.println("Erro ao validar: " + e);
retorno = false;
}
return retorno;
}
//retorno
public List<Pessoa> retornoLastId(){
List<Pessoa> lastInserId = new ArrayList<>();
try {
//consulta simples
stmt = conn.prepareStatement("SELECT LAST_INSERT_ID() AS id");
//executeQuery realziada consulta no banco
rs = stmt.executeQuery();
if (rs.next()) {
Login dadosId = new Login();
dadosId.setIdPessoa(rs.getInt("id"));
lastInserId.add(dadosId);
}
} catch (Exception e) {
System.out.println("Erro ao pegar ultimo ID: " + e);
}
return lastInserId;
}
//metodo para verificar se existe cpf
private boolean verificCpfExistente(String cpf){
dados.setCpf(cpf);
boolean retorno = false;
try {
stmt = conn.prepareStatement("SELECT cpf FROM pessoa WHERE cpf = ?");
stmt.setString(1, dados.getCpf());
rs = stmt.executeQuery();
if (rs.next()){
retorno = true;
}
System.out.println("cpf existe");
} catch (SQLException e) {
System.out.println("Nenhum cpf: " + e);
retorno = false;
}
return retorno;
}
//metodo para verificar se existe cpf
private boolean verificaEmailExistente(String email){
dados.setEmail(email);
boolean retorno = false;
try {
stmt = conn.prepareStatement("SELECT email FROM pessoa WHERE email = ?");
stmt.setString(1, dados.getEmail());
rs = stmt.executeQuery();
if (rs.next()){
retorno = true;
}
System.out.println("email ja existe");
} catch (SQLException e) {
System.out.println("Nenhum email: " + e);
retorno = false;
}
return retorno;
}
//metodo para verificar se existe cpf
private boolean verificaLoginExistente(String login){
dados.setLogin(login);
boolean retorno = false;
try {
stmt = conn.prepareStatement("SELECT login FROM login WHERE login = ?");
stmt.setString(1, dados.getLogin());
rs = stmt.executeQuery();
if (rs.next()){
retorno = true;
}
System.out.println("login ja existe");
} catch (SQLException e) {
System.out.println("Nenhum login: " + e);
retorno = false;
}
return retorno;
}
public String pessoaInsere(String nome, String cpf, String email, String login){
String msg;
dados.setCpf(cpf);
dados.setNome(nome);
dados.setEmail(email);
dados.setLogin(login);
//verifica se o cpf ja existe
if (verificCpfExistente(dados.getCpf()) == true) {
msg = "cpf ja existe!\n";
}else{
if (verificaEmailExistente(dados.getEmail()) == true) {
msg = "email ja existe!\n";
}else{
if (verificaLoginExistente(dados.getLogin()) == true) {
msg = "login ja existe!";
}else{
try{
//inserir sql - insert into
stmt = conn.prepareStatement("INSERT INTO pessoa (nome, cpf, email) VALUES (?,?,?)");
//exatamente a ordem q foi passada das colunas
stmt.setString(1, dados.getNome());
stmt.setString(2, dados.getCpf());
stmt.setString(3, dados.getEmail());
stmt.execute();
msg = "Inserido 1";
System.out.println("inseriu pessoa");
} catch (SQLException ex) {
msg = "Erro ao inserir dados: " + ex;
}
}
}
}
return msg;
}
public String loginInsere(String login, String senha){
dados.setLogin(login);
dados.setSenha(senha);
String msg;
if (verificaLoginExistente(dados.getLogin()) == true) {
msg = "login ja existe!";
}else{
retornoLastId().forEach((a) -> {
dados.setIdPessoa(a.getIdPessoa());
});
if(dados.getIdPessoa() == 0){
msg = "erro de id";
}else{
try {
stmt = conn.prepareStatement("INSERT INTO login (id_pessoa, login, senha) VALUES (?,?,?)");
//exatamente a ordem q foi passada das colunas
stmt.setInt(1, dados.getIdPessoa());
stmt.setString(2, dados.getLogin());
stmt.setString(3, dados.getSenha());
//executar a sql
stmt.execute();
msg = "login Inserido com Sucesso!:";
} catch (SQLException ex) {
msg = "Erro ao inserir dados: " + ex;
System.out.println("erro: " + ex);
}
}
}
return msg;
}
}
minha controller passando tudo:
package Controller;
import DAO.PessoaDAO;
import Model.Pessoa;
import Model.Usuario;
import java.util.List;
public class LoginController {
PessoaDAO dadosU = new PessoaDAO();
Usuario Obj = new Usuario();
public List<Pessoa> listarPes(){
return dadosU.listarPessoas();
}
public Object getIdPessoa(){
Obj.getIdPessoa();
return Obj;
}
agora na minha VIEW listando os dados na combobox:
public void carregarComboBox(){
cbPessoas.removeAllItems();
//carrega itens do banco de dados
login.listarPes().forEach((a) -> {
cbPessoas.addItem(a);
});
}
agora aq é a parte q vem o erro quando clino no botão para recuperar somente o id da bombox da um erro de cast
esse codigo a baixo vai no botão: recuperar idPessoa da combobox
LoginController loginCont = (LoginController) cbPessoas.getSelectedItem();
JOptionPane.showMessageDialog(null, "id: " + loginCont.getIdPessoa());
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: Model.Usuario cannot be cast to Controller.LoginController