1
resposta

objeto como parametro no result set

Eu to fazendo um projeto pra estudar em em que existe uma tabela Player e uma tabela Hero, e uma das colunas da tabela Hero é o id de um Player. Como eu passo isso pro método listar no HeroDAO?

Segue o que eu achei que daria certo mas não deu:

O construtor sem o id que é gerado automaticamente:

public Hero(String HeroNam, int level, int strenght, int hp, int speed, Player player, RacesEnum charRace) {
        super();
        this.HeroName = HeroNam;
        this.level = level;
        this.strenght = strenght;
        this.hp = hp;
        this.speed = speed;
        this.playerID = player;
        this.charRace = charRace;
    }

e o listar do DAO:

public List<Hero> listar() throws SQLException{

        List<Hero> lista = new ArrayList<>();

        String sql = "SELECT * FROM hero";

        try(PreparedStatement pstm = connection.prepareStatement(sql)){
            pstm.execute();

            try(ResultSet rst = pstm.getResultSet()){
                while(rst.next()) {
                    Hero hero = new Hero(rst.getString(1), rst.getInt(2), rst.getInt(3), rst.getInt(4), rst.getInt(5), rst.getInt(6).getPlayerId(), rst.getString(7).toString());
                }
            }
        }
    }
1 resposta

Boa tarde Thiago.

Pelo código enviado, seu construtor do Hero está esperando um objeto do tipo Player. Já na chamada de criação do Hero, você passa apenas o ID (do tipo int). Faça um teste alterando o parametro do construtor de Hero de "Player player" para "Integer playerID".

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software