Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Listar dados de uma tabela associativa

Olá pessoal, Estou tentando listar os dados de uma tabela associativa, mas estou encontrando o seguinte problema: Esta vindo vazio

Meu método atual esta o seguinte:(PessoaTimeDAO)

public List<PessoaTime> listarParticipantes(Time time) {
        String consulta = "select pt from PessoaTime pt where pt.time.id = :timeId";
        Query query = getEm().createQuery(consulta);

        query.setParameter("timeId", time.getId());

        List<PessoaTime> participantes = query.getResultList();
        return participantes;
    }

Chamando ele desta forma:(TimeBean)

public List<PessoaTime> listarParticipantes(){
        return pessoaTimeDAO.listarParticipantes(time);
    }

Exibindo desta forma:(listarParticipantes.xhtml)

<p:dataTable styleClass="table" var="time"
                                        value="#{timeMB.listarParticipantes()}">

                                        <p:column headerText="idPessoa">
                                            <h:outputText  value="#{pessoa.nomeUsuario}" />
                                        </p:column>    

                                        <p:column headerText="idPessoa">
                                            <h:outputText  value="#{pessoa.id}" />
                                        </p:column>                            

                                    </p:dataTable>

Para quem estiver com duvida das classes, vou colocar algumas models.

PessoaModel:

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column (name = "id_Pessoa")
    private Integer id;

    @Column()
    private String nomeUsuario;

    @Column()
    private String senhaUsuario;

    @Column()
    private String nomeCompleto;

    @Column()
    private String email;

    @Column()
    private Integer idade;

    @OneToMany(mappedBy = "pessoa", cascade = CascadeType.MERGE)
    private List<PessoaTime> listaPessoaTime;

TimeMode:

@Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column (name = "id_Time")
    private int id;

    @Column(nullable = false)
    private String nome;

    @Column(nullable = false)
    private String senhaTime;


    @OneToMany(mappedBy = "time",cascade = CascadeType.MERGE)
    private List<PessoaTime> listaPessoaTime;

PessoaTimeModel:

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column (name="id_PessoaTime")
    private Integer id;

    @ManyToOne(cascade = CascadeType.MERGE)
    @JoinColumn(name="id_pessoa")
    private Pessoa pessoa;

    @ManyToOne(cascade = CascadeType.MERGE)
    @JoinColumn(name="id_time")
    private Time time;

    @Enumerated(EnumType.STRING)
    private Cargo cargo;
1 resposta
solução!

Resolvido pessoal, Estava certo os metodos, o que estava deito errado era a DataTable

Ficou desta forma:

<p:dataTable styleClass="table" var="time"
                                        value="#{timeMB.listarParticipantes()}">

                                        <p:column headerText="idPessoa">
                                            <h:outputText  value="#{time.pessoa.id}" />
                                        </p:column>    

                                        <p:column headerText="idPessoa">
                                            <h:outputText  value="#{time.pessoa.nomeUsuario}" />
                                        </p:column>        

                                        <p:column headerText="idPessoa">
                                            <h:outputText  value="#{time.cargo}" />
                                        </p:column>                                                        

                                    </p:dataTable>

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