List two related tables Primefaces x Hibernate

Asked

Viewed 546 times

0

I need to list information from the two tables on the same grid, they have relationship created by Ibernate itself. You would need the vendor name in the table shown below

In case it would be these classes:

Model:

public class Produto {

@Id
@GeneratedValue
private Integer id;
private String nome;
private String marca;
private String categoria;
private double preco;


@ManyToMany
private List<Fornecedor> fornecedor = new ArrayList<Fornecedor>();

public List<Fornecedor> getFornecedor() {
    return fornecedor;
}

public void adicionaFornecedor(Fornecedor fornecedor) {
    this.fornecedor.add(fornecedor);
}

@ManyToMany
private List<Produto> produtos = new ArrayList<Produto>();

public List<Produto> getProdutos() {
    return produtos;
}

public void adicionaProduto(Produto produtos) {
    this.produtos.add(produtos);
}


public Produto (){
}
  /*getter and setters*/

@Entity
@Embeddable
public class Fornecedor {

@Id
@GeneratedValue
private int id;
private String nome;
private Integer telefone;
private String email;


@ManyToMany 
private List<Fornecedor> fornecedores = new ArrayList<Fornecedor>();

public List<Fornecedor> getFornecedores() {
    return fornecedores;
}

public void adicionaFornecedor(Fornecedor fornecedores) {
    this.fornecedores.add(fornecedores);
}

/*getter and setters*/

<p:dataTable value="#{produtoBean.produtos}" var="produto" 
paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
paginator="true" rows="5" style="margin-bottom:10px">
    <p:column >
        <f:facet name="header">Nome</f:facet>
        <h:outputText value="#{produto.nome}" />
    </p:column>
    <p:column>
        <f:facet name="header">Marca</f:facet>
        <h:outputText value="#{produto.marca}" />
    </p:column>     
    <p:column>
        <f:facet name="header">Categoria</f:facet>
        <h:outputText value="#{produto.categoria}" />
    </p:column>     
    <p:column>
        <f:facet name="header">Preço</f:facet>
        <h:outputText value="#{produto.preco}" />
    </p:column>     

</p:dataTable>
  • Your entities even have these self-relationships? Produto has @ManyToMany Produto ? Gives a better formatted entities as well, got a little confused. It is not possible to easily identify the end of classes Produto and Fornecedor.

1 answer

0

<p:dataTable value="#{produtoBean.produtos}" var="produto" 
paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
paginator="true" rows="5" style="margin-bottom:10px">

<p:column>
        <f:facet name="header">Telefone Fornecedor </f:facet>
        <h:outputText value="#{produto.fornecedor.telefone}" />
    </p:column>  
    <p:column>
        <f:facet name="header">Nome Fornecedor </f:facet>
        <h:outputText value="#{produto.fornecedor.nome}" />
    </p:column>  

    <p:column>
        <f:facet name="header">Email Fornecedor </f:facet>
        <h:outputText value="#{produto.fornecedor.email}" />
    </p:column>    

</p:dataTable>
  • Try it like this, let’s see if it works!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.