Problema com uma table view

1 resposta
LostSpirit
public List<Requisicao> getList() {
    List<Requisicao> requisicoes = new ArrayList<>();
    String sql = "SELECT * FROM computador_requisicao";
    try {
        PreparedStatement stmt = con.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
        Usuario solicitante = new Usuario();
        solicitante.setId(rs.getLong("idusuario"));
        Requisicao req = new Requisicao();  
        req.setId(rs.getLong("id"));
        req.setSolicitante(solicitante);
        req.setNome(rs.getString("nome"));
        req.setData(rs.getTimestamp("data_requisicao"));
        req.setMotivo(rs.getString("Observacao"));       
        requisicoes.add(req);
        }
        stmt.close();
        rs.close();
    } catch (SQLException ex) {
        return null;
    }
    return requisicoes;
}

tenho esse metodo que vai gerar uma lista de todos os registros da tabela requisição
e nessa tabela requisição tem o id do usuario que a criou que fica salvo em uma outra classe
Usuario
eu debuguei e funciona normalmente todos os 3 registros estão recebendo o id do usuario que criou com esse metodo

porém a tableview está setando o mesmo id do id da requisição no id do usuario e não o id do usuario que o criou;

todos os registros estão recebendo o valor id_usuario corretamente
user

porém na table view não acontece isso:
table

codigo da table view:

@FXML
private TableView<Requisicao> tb;
@FXML
private TableColumn<Requisicao, Long> clmid;
@FXML
private TableColumn<Requisicao, Long> clmIdUser;
@FXML
private TableColumn<Requisicao, String> clmNome;

@FXML
private TableColumn<Requisicao, Date> clmDate;

@FXML
private TableColumn<Requisicao, String> clmMotivo;

private ObservableList<Requisicao> requisicao = FXCollections.observableArrayList();
public void initialize(URL url, ResourceBundle rb) {
initTable();
}
public void initTable() {
    clmid.setCellValueFactory(new PropertyValueFactory("id"));
    clmIdUser.setCellValueFactory(new PropertyValueFactory("id"));
    clmNome.setCellValueFactory(new PropertyValueFactory("nome"));
    clmDate.setCellValueFactory(new PropertyValueFactory("dataEntrada"));
    clmMotivo.setCellValueFactory(new PropertyValueFactory("motivo"));
    tb.setItems(atualizarTabela());
}
public ObservableList<Requisicao> atualizarTabela() {
    RequisicaoDAO dao = new RequisicaoDAO();
    requisicao = FXCollections.observableArrayList(dao.getList());
    return requisicao;
}
creio que o problema esteja nessa parte, mas não faço ideia de como resolver ( está pegando o id da requisição e não do usuario que setei na lista.)

@FXML

private TableColumn<Requisicao, Long> clmIdUser;

clmIdUser.setCellValueFactory(new PropertyValueFactory(id));

1 Resposta

Lucas_Camara

Eae cara. Do jeito que passei pra tu tentar no outro post, teve uma coisa que vc tinha colocado errado. Você usou String em vez de Long no método call

Criado 27 de junho de 2019
Ultima resposta 27 de jun. de 2019
Respostas 1
Participantes 2