1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Como faço para realizar uma busca com o @OneToMany

Não consigo realizar a consulta usando o @OneToMany, se alguém puder me ajudar fico muito grato

Uma classe cliente

@Entity
@Table(name="cliente")

public class CadastroCliente 
{
    @Id
    @GeneratedValue
    @Column(name="id_cliente")
    private Long id;

    @Temporal(TemporalType.DATE)
    @Column(name="data_cadastro", nullable=false)
    private Date dataCadastro;

    @Column(name="nm_cliente", nullable=false, unique=true)
    private String nome;

    @Column(name="nr_cpf", nullable=false, unique=true )
    private String cpf;

    @Column(name="nm_lebrete", nullable=true)
    private String lembrete;

    @OneToMany(cascade=CascadeType.ALL, mappedBy="cadastroCliente")    
    private List<ContatoCliente> contatos;


    public List<ContatoCliente> getContatos() {
        return contatos;
    }
    public void setContatos(List<ContatoCliente> contatos) {
        this.contatos = contatos;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public Date getDataCadastro() {
        return dataCadastro;
    }
    public void setDataCadastro(Date dataCadastro) {
        this.dataCadastro = dataCadastro;
    }
    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.replaceAll("\\D", "");
    }
    public String getLembrete() {
        return lembrete;
    }
    public void setLembrete(String lembrete) {
        this.lembrete = lembrete;
    }

minha classe contato

@Entity
@Table(name="contato")
public class ContatoCliente 
{
    @Id
    @GeneratedValue
    @Column(name="id_contato")
    private Long id;

    @ManyToOne(optional=false)
    @JoinColumn(name="id_cliente")
    private CadastroCliente cadastroCliente;    

    @Column(name="nr_telefone", nullable=true, unique=false)
    private String telefone;

    @Column(name="nr_celularwhatsapp", nullable=false, unique=false)
    private String celularWhatsapp;

    @Column(name="nr_celular", nullable=true, unique=false)
    private String celular;

    @Column(name="nm_email", nullable=false)
    private String email;

    @Column(name="nm_site", nullable=true)
    private String site;

    //Construtor padrão
    public ContatoCliente()
    {
        super();
    }
    //Método getters e Setters

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public CadastroCliente getCadastroCliente() {
        return cadastroCliente;
    }

    public void setCadastroCliente(CadastroCliente cadastroCliente) {
        this.cadastroCliente = cadastroCliente;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String getCelularWhatsapp() {
        return celularWhatsapp;
    }

    public void setCelularWhatsapp(String celularWhatsapp) {
        this.celularWhatsapp = celularWhatsapp;
    }

    public String getCelular() {
        return celular;
    }

    public void setCelular(String celular) {
        this.celular = celular;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getSite() {
        return site;
    }

    public void setSite(String site) {
        this.site = site;
    }

meu repository

public class CadastroClienteDAO 
{
    private EntityManager manager;

    public CadastroClienteDAO(EntityManager manager)
    {
        this.manager = manager;
    }

    public void adicionar(CadastroCliente cadastroCliente)
    {        
            this.manager.persist(cadastroCliente);

    }


    public  List<CadastroCliente> todos()
    {
        TypedQuery<CadastroCliente> query = manager.createQuery("from CadastroCliente", CadastroCliente.class);

        return query.getResultList();
    }

}

Meu bean

@ManagedBean
@SessionScoped
public class CadastroClienteBean 
{

    private CadastroCliente cadastroCliente = new CadastroCliente();
    private ContatoCliente contatoCliente = new ContatoCliente();
    private EnderecoCliente enderecoCliente = new EnderecoCliente();
    private List<CadastroCliente> clientes;
    private List<ContatoCliente> contatos;



    public void salvar()
    {
        EntityManager manager = JpaUtil.getEntityManager();
        EntityTransaction trx = manager.getTransaction();
        FacesContext context = FacesContext.getCurrentInstance();

        try
        {
            trx.begin();
            //inserindo cadastro de cliente no banco
            CadastroClienteController cadastroClienteController = new CadastroClienteController(new CadastroClienteDAO(manager));

            //inserindo o contato no banco de dados
            ContatoClienteController contatoClienteController = new ContatoClienteController(new ContatoClienteDAO(manager));
            contatoCliente.setCadastroCliente(cadastroCliente);

            //inserindo o endereço no banco de dados
            EnderecoClienteController enderecoClienteController = new EnderecoClienteController(new EnderecoClienteDAO(manager));
            enderecoCliente.setCadastroCliente(cadastroCliente);


                cadastroClienteController.salvar(cadastroCliente);

                contatoClienteController.salvar(contatoCliente);
                enderecoClienteController.salvar(enderecoCliente);
                context.addMessage(null, new FacesMessage("Usuário cadastrado com sucesso"));

                cadastroCliente = new CadastroCliente();
                contatoCliente = new ContatoCliente();
                enderecoCliente = new EnderecoCliente();

                trx.commit();




        }catch(com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException|CadastroClienteException|ContatoClienteException|EnderecoClienteException cause)
        {
            trx.rollback();
            FacesMessage message = new FacesMessage(cause.getMessage());
            message.setSeverity(FacesMessage.SEVERITY_ERROR);
            context.addMessage(null, message);
        }finally
        {
            manager.close();
        }
    }

    public void buscarTodos()
    {
        EntityManager manager = JpaUtil.getEntityManager();
        CadastroClienteDAO cadastroClienteDAO = new CadastroClienteDAO(manager);
        this.clientes = cadastroClienteDAO.todos();
        manager.close();

    }

    public void buscarTodosContatos()
    {
        EntityManager manager = JpaUtil.getEntityManager();
        ContatoClienteDAO contatoClienteDAO = new ContatoClienteDAO(manager);

        this.contatos = contatoClienteDAO.todos();

        manager.close();

    }

    public CadastroCliente getCadastroCliente() {
        return cadastroCliente;
    }

    public ContatoCliente getContatoCliente() {
        return contatoCliente;
    }

    public EnderecoCliente getEnderecoCliente() {
        return enderecoCliente;
    }

    public EstadoVO[] getEstadoVO()
    {  
        return EstadoVO.values();  
    }

    public List<CadastroCliente> getClientes() {
        return clientes;
    }

    public List<ContatoCliente> getContatos() {
        return contatos;
    }  


}

e minha pagina consultarCliente.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition template="/TEMPLATE/layout.xhtml"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui">

    <f:metadata>
        <f:viewAction action="#{cadastroClienteBean.buscarTodos()}"/>

    </f:metadata>

<ui:define name="titulo">Consulta de CLientes</ui:define>
<ui:define name="corpo">

    <h1>Consultar cliente</h1>    

    <h:form>
        <p:dataTable value="#{cadastroClienteBean.clientes}" var="consultarClientes" border="1" cellspacing="0" 
                        cellpadding="2" paginator="true" rows="3" paginatorPosition="bottom">
            <p:column headerText="Cliente" sortBy="#{consultarClientes.nome}">
                <h:outputText value="#{consultarClientes.nome}" />
            </p:column>    
            <p:column headerText="CPF" sortBy="#{consultarClientes.cpf}">
                <h:outputFormat value="#{consultarClientes.cpf}" />
            </p:column>            
            <p:column headerText="DataCadastro" sortBy="#{consultarClientes.dataCadastro}">
                <h:outputText value="#{consultarClientes.dataCadastro}">
                    <f:convertDateTime pattern="dd/MM/yyyy" timeZone="America/Sao_Paulo"/>
                </h:outputText>
            </p:column>    

            <p:column headerText="Lembrete" sortBy="#{consultarClientes.lembrete}">
                <h:outputText value="#{consultarClientes.lembrete}" />
            </p:column>    
            <p:column headerText="whatsapp" sortBy="#{consultarClientes.contatos}">
                <h:outputText value="#{consultarClientes.contatos}" />
            </p:column>    
        </p:dataTable>                        
    </h:form>

</ui:define>
</ui:composition>
  • Alguém pode me ajudar por favor?

    titofsa   10 de nov de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java-ee ou faça a sua própria pergunta.