ManyToOny - OnyToMany?

Pessoal tenho um sistema aqui em jsf assim:

Uma tabela Pessoa e outra Mensalidade :

AS TABELAS TÃO ASSIM :

-- Table: mensalidade

-- DROP TABLE mensalidade;

CREATE TABLE mensalidade
(
  men_id bigint NOT NULL,
  data_pag date,
  valor bigint,
  pessoa_id bigint,
  CONSTRAINT mensalidade_pkey PRIMARY KEY (men_id),
  CONSTRAINT fkef67005faa19c41 FOREIGN KEY (pessoa_id)
      REFERENCES pessoa (pessoa_id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
  OIDS=FALSE
);
ALTER TABLE mensalidade OWNER TO root;
-- Table: pessoa

-- DROP TABLE pessoa;

CREATE TABLE pessoa
(
  pessoa_id bigint NOT NULL,
  rg character varying(255),
  bairro character varying(255),
  celular character varying(255),
  cidade character varying(255),
  cpf character varying(255),
  data_matricula date,
  data_nasc date,
  digina character varying(255),
  email character varying(255),
  endereco character varying(255),
  fone character varying(255),
  matricula character varying(40) NOT NULL,
  nome character varying(40) NOT NULL,
  orgao_exp character varying(255),
  senha character varying(255),
  status character varying(255),
  titulo_ele character varying(255),
  uf character varying(255),
  CONSTRAINT pessoa_pkey PRIMARY KEY (pessoa_id),
  CONSTRAINT pessoa_cpf_key UNIQUE (cpf)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE pessoa OWNER TO root;

Pessoa 1 ------------------------N Mensalidaes

/*************************************************/
 /*  relacionamento 1 Pessoa para n Mensalidade   */
 /*                                               */
 /*************************************************/
        @OneToMany(mappedBy="pessoa", fetch = FetchType.LAZY)
        @Cascade(CascadeType.ALL)
        public List<Mensalidade> Mensalidades;
 /*********************fim*****************************/

Mensalidaes N----------------------------1 Pessoa

[code]//
/
relacionamento n Mensalidade para 1 Pessoa /
/
/
/
/
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="pessoa_id",
insertable=true, updatable=true)
@Fetch(FetchMode.JOIN)
@Cascade(CascadeType.SAVE_UPDATE)

public Pessoa pessoa;
/fim***/
[/code]

No Formulário Pagamento tenho:

 <h:outputLabel for="matricula" value="Digite a Matrícula: " />
                                <h:inputText id="matriuclaInput" value="#{pessoaMB.pessoa.matricula}"  styleClass="inputPesquisa" >
                                <a4j:commandButton  value="Pesquisar" action="#{pessoaMB.pesquisaByMatricula}" styleClass="inputPesquisaBtn2" reRender="inputs,fisicas,pessoas">
                                </a4j:commandButton>
                                </h:inputText>
<h:outputLabel for="id" value="CÓDIGO.: "  />
                                <h:inputText id="id" value="#{mensalidadeMB.mensalidade.id}" styleClass="inputPesquisa3" size="4" >
                                </h:inputText>
<h:outputLabel for="Data Pagamento.:" value="Data Pagamento.: "  />
                    <rich:calendar id="data_pag" value="#{mensalidadeMB.mensalidade.data_pag}">
                    <a4j:support event="ondateselected" />
                    </rich:calendar>
<h:outputLabel for="valor" value="Valor.: ($)"/>
                                <h:inputText id="valor" value="#{mensalidadeMB.mensalidade.valor}" styleClass="edit" size="30">
                                </h:inputText>

   Resumindo: Eu entro no formulário pagar mensalidade procuro uma pessoa Acho ela cadastro a data e o valor e relaciono os 2 . pessoa e mensalidade !

minhas classes :

package br.gov.nutec.modelo;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import org.hibernate.validator.NotNull;

@Entity
@Table(name="mensalidade",schema="public")
public class Mensalidade implements Serializable {

private static long serialVersionUID = 1L;
public static long getSerialVersionUID() {
return serialVersionUID;
    }
    public static void setSerialVersionUID(long aSerialVersionUID) {
        serialVersionUID = aSerialVersionUID;
    }

	@Id
        @NotNull
	@GeneratedValue(strategy=GenerationType.SEQUENCE)
	@Column(name="men_id")   // chave primaria
	private Long id;

        @Column(name="data_pag")
        @Temporal(javax.persistence.TemporalType.DATE)
	private Date data_pag;

        @Column(name="valor")
        private Long valor;

/*************************************************/
/*  relacionamento n Mensalidade para 1 Pessoa   */
/*                                               */
/*************************************************/
  @ManyToOne(fetch = FetchType.EAGER)
  @JoinColumn(name="pessoa_id",
                  insertable=true, updatable=true)
  @Fetch(FetchMode.JOIN)
  @Cascade(CascadeType.SAVE_UPDATE)

  public Pessoa pessoa;
  
 /*********************fim************************/
    @Override
     public boolean equals(Object obj){
		if( (obj instanceof Mensalidade) && ( ((Mensalidade)obj).getValor().equals(this.getValor())) ){
			return true;
		}else{
			return false;
		}
	}

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 41 * hash + (this.getId() != null ? this.getId().hashCode() : 0);
        hash = 41 * hash + (this.getData_pag() != null ? this.getData_pag().hashCode() : 0);
        hash = 41 * hash + (this.getValor() != null ? this.getValor().hashCode() : 0);
        return hash;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public Date getData_pag() {
        return data_pag;
    }
    public void setData_pag(Date data_pag) {
        this.data_pag = data_pag;
    }
    public Long getValor() {
        return valor;
    }
    public void setValor(Long valor) {
        this.valor = valor;
    }
}
package br.gov.nutec.modelo;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;
import javax.persistence.*;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

@Entity
@Table(name="pessoa",schema="public")
public class Pessoa implements Serializable {

private static long serialVersionUID = 1L;
public static long getSerialVersionUID() {
return serialVersionUID;
    }
public static void setSerialVersionUID(long aSerialVersionUID) {
serialVersionUID = aSerialVersionUID;
    }   

        @Id
	//@GeneratedValue(strategy=GenerationType.IDENTITY)
        @GeneratedValue(strategy=GenerationType.SEQUENCE)
	@Column(name="pessoa_id")   // chave primaria
	private Long id;

        @NotNull
	@Length(min =5 , max = 40)
	@Column(name="nome")
	private String nome; 
        
        @Column(name="cpf", unique=true)
        private String cpf;
                
        @NotNull
        @Length(min =1 , max = 40)
        @Column(name="matricula")
	private String matricula;

        @Column(name="digina")
	private String digina;

        @Column(name="data_matricula")
        @Temporal(javax.persistence.TemporalType.DATE)
	private Date data_matricula;

        @Column(name="RG")
	private String RG;

        @Column(name="orgao_exp")
	private String orgao_exp;

        @Column(name="titulo_ele")
	private String titulo_ele;

        @Column(name="endereco")
	private String endereco;

        @Column(name="bairro")
	private String bairro;

        @Column(name="cidade")
	private String cidade;

        @Column(name="uf")
	private String uf;

        @Column(name="fone")
	private String fone;

        @Column(name="celular")
	private String celular;

	@Column(name="email")
	private String email;
	
	@Column(name="senha")
	private String senha;
        
        @Column(name="status")
	private String status;

        @Temporal(TemporalType.DATE)
	@Column(name="data_nasc")
	private Date data_nasc;

 /*************************************************/
 /*  relacionamento 1 Pessoa para n Mensalidade   */
 /*                                               */
 /*************************************************/
        @OneToMany(mappedBy="pessoa", fetch = FetchType.LAZY)
        @Cascade(CascadeType.ALL)
        private List<Mensalidade> Mensalidades;
 /*********************fim*****************************/
        
	public void setNome(String nome) {
		System.out.println("Pessoa >> nome : "  + this.nome);
		
		this.nome = nome;
	}

	
	@Override
	public boolean equals(Object obj){
		if( (obj instanceof Pessoa) && ( ((Pessoa)obj).getCpf().equals(this.getCpf())) ){
			return true; 
		}else{
			return false; 
		}
	}

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 23 * hash + (this.getId() != null ? this.getId().hashCode() : 0);
        hash = 23 * hash + (this.getNome() != null ? this.getNome().hashCode() : 0);
        hash = 23 * hash + (this.getCpf() != null ? this.getCpf().hashCode() : 0);
        hash = 23 * hash + (this.getMatricula() != null ? this.getMatricula().hashCode() : 0);
        hash = 23 * hash + (this.getDigina() != null ? this.getDigina().hashCode() : 0);
        hash = 23 * hash + (this.getData_matricula() != null ? this.getData_matricula().hashCode() : 0);
        hash = 23 * hash + (this.getRG() != null ? this.getRG().hashCode() : 0);
        hash = 23 * hash + (this.getOrgao_exp() != null ? this.getOrgao_exp().hashCode() : 0);
        hash = 23 * hash + (this.getTitulo_ele() != null ? this.getTitulo_ele().hashCode() : 0);
        hash = 23 * hash + (this.getEndereco() != null ? this.getEndereco().hashCode() : 0);
        hash = 23 * hash + (this.getBairro() != null ? this.getBairro().hashCode() : 0);
        hash = 23 * hash + (this.getCidade() != null ? this.getCidade().hashCode() : 0);
        hash = 23 * hash + (this.getUf() != null ? this.getUf().hashCode() : 0);
        hash = 23 * hash + (this.getFone() != null ? this.getFone().hashCode() : 0);
        hash = 23 * hash + (this.getCelular() != null ? this.getCelular().hashCode() : 0);
        hash = 23 * hash + (this.getEmail() != null ? this.getEmail().hashCode() : 0);
        hash = 23 * hash + (this.getSenha() != null ? this.getSenha().hashCode() : 0);
        hash = 23 * hash + (this.getData_nasc() != null ? this.getData_nasc().hashCode() : 0);
        return hash;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getNome() {
        return nome;
    }
    public String getCpf() {
        return cpf;
    }
    public void setCpf(String cpf) {
        this.cpf = cpf;
    }
    public String getMatricula() {
        return matricula;
    }
    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }
    public String getDigina() {
        return digina;
    }
    public void setDigina(String digina) {
        this.digina = digina;
    }
    public Date getData_matricula() {
        return data_matricula;
    }
    public void setData_matricula(Date data_matricula) {
        this.data_matricula = data_matricula;
    }
    public String getRG() {
        return RG;
    }
    public void setRG(String RG) {
        this.RG = RG;
    }
    public String getOrgao_exp() {
        return orgao_exp;
    }
    public void setOrgao_exp(String orgao_exp) {
        this.orgao_exp = orgao_exp;
    }
    public String getTitulo_ele() {
        return titulo_ele;
    }
    public void setTitulo_ele(String titulo_ele) {
        this.titulo_ele = titulo_ele;
    }
    public String getEndereco() {
        return endereco;
    }
    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }
    public String getBairro() {
        return bairro;
    }
    public void setBairro(String bairro) {
        this.bairro = bairro;
    }
    public String getCidade() {
        return cidade;
    }
    public void setCidade(String cidade) {
        this.cidade = cidade;
    }
    public String getUf() {
        return uf;
    }
    public void setUf(String uf) {
        this.uf = uf;
    }
    public String getFone() {
        return fone;
    }
    public void setFone(String fone) {
        this.fone = fone;
    }
    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 getSenha() {
        return senha;
    }
    public void setSenha(String senha) {
        this.senha = senha;
    }
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    public Date getData_nasc() {
        return data_nasc;
    }
    public void setData_nasc(Date data_nasc) {
        this.data_nasc = data_nasc;
    }
    public List<Mensalidade> getMensalidades() {
        return Mensalidades;
    }
    public void setMensalidades(List<Mensalidade> Mensalidades) {
        this.setMensalidades(Mensalidades);
    }
}
package br.gov.nutec.mb;
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import br.gov.nutec.facade.MensalidadeFacade;
import br.gov.nutec.facade.MensalidadeFacadeImpl;
import br.gov.nutec.modelo.Mensalidade;

public class MensalidadeMB implements Serializable {
	private static long serialVersionUID = -333995781063775201L;
    public static long getSerialVersionUID() {
        return serialVersionUID;
    }
    public static void setSerialVersionUID(long aSerialVersionUID) {
        serialVersionUID = aSerialVersionUID;
    }
	
	
        /* campos */
        
        private Mensalidade Mensalidade = new Mensalidade();
        private Long id;
        private Mensalidade mensalidade;


	public MensalidadeMB(){
		System.out.println(" >>>>>>>>>>>>>>>>>>>> Contrutor do Mensalidade_MB <<<<<<<<<<<<<<<<<<");
		if(this.Mensalidade == null){
			this.Mensalidade = new Mensalidade();
		}
	}

	public String login() throws Exception{
        boolean logado = false;
        HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
        HttpServletResponse rp = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
        HttpServletRequest rq = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
        MensalidadeFacade MensalidadeService = new MensalidadeFacadeImpl();
        //logado = MensalidadeService.autentica(this.getMensalidade().getEmail(), this.getMensalidade().getSenha());
        if(logado){
            session.setAttribute("user", logado);
            rp.sendRedirect(rq.getContextPath() + "/pages/index.jsf");
            return "success";
        }else{
            session.setAttribute("user", null);
            session.removeAttribute("user");
            rp.sendRedirect(rq.getContextPath() + "/pages/login/login.jsf");
            return "failure";
        }
    }
	public String logout() {
		HttpServletRequest rq = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
		HttpServletResponse rp = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
		FacesContext facesContext = FacesContext.getCurrentInstance();
		HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(false);
		session.invalidate();
		try {
			rp.sendRedirect(rq.getContextPath() + "/pages/login/login.jsf");
		} catch (IOException e) {
			e.printStackTrace();
		}
		return "logoutOk";
	}

        //* *******************************FUNCOES BASICAS**********************************************************/
	public String save(){
		MensalidadeFacade mensalidadeService = new MensalidadeFacadeImpl();

		mensalidadeService.salva(this.getMensalidade());

		this.setMensalidade(new Mensalidade());
		return "cadastraSucesso";
	}

	public String delete(){
		MensalidadeFacade mensalidadeService = new MensalidadeFacadeImpl();
		this.getMensalidade().setId(getId());
		mensalidadeService.remove(this.getMensalidade());
		this.setMensalidade(new Mensalidade());

		return "removeSucesso";
	}

	public String merge(){
		MensalidadeFacade mensalidadeService = new MensalidadeFacadeImpl();
		mensalidadeService.atualiza(this.getMensalidade());
		this.setMensalidade(new Mensalidade());

		return "atualizaSucesso";
	}

	public String load(){
		MensalidadeFacade mensalidadeService = new MensalidadeFacadeImpl();
		this.setMensalidade(mensalidadeService.procura(this.getId()));

		return "pesquisaSucesso";
	}

   //* *******************************FUNCOES BASICAS*******FIM***************************************************/
public List<Mensalidade> getMensalidades(){
		MensalidadeFacade pessoaService = new MensalidadeFacadeImpl();
		return pessoaService.lista();
	}

      	public Mensalidade getMensalidade() {
		return mensalidade;
	}
	public void setMensalidade(Mensalidade mensalidade) {
		this.mensalidade = mensalidade;
	}
       
        public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
}
package br.gov.nutec.mb;
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import br.gov.nutec.facade.PessoaFacade;
import br.gov.nutec.facade.PessoaFacadeImpl;
import br.gov.nutec.modelo.Pessoa;

public class PessoaMB implements Serializable {
	private static long serialVersionUID = -333995781063775201L;
    public static long getSerialVersionUID() {
        return serialVersionUID;
    }
    public static void setSerialVersionUID(long aSerialVersionUID) {
        serialVersionUID = aSerialVersionUID;
    }

        /* campos */

	private Pessoa pessoa = new Pessoa();
	private Long id;
        
	public PessoaMB(){
		System.out.println(" >>>>>>>>>>>>>>>>>>>> Contrutor do PESSOA_MB <<<<<<<<<<<<<<<<<<");
		if(this.pessoa == null){
			this.pessoa = new Pessoa(); 
		}
	}
	
	public String login() throws Exception{
        boolean logado = false;
        HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
        HttpServletResponse rp = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
        HttpServletRequest rq = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
        PessoaFacade pessoaService = new PessoaFacadeImpl();
        logado = pessoaService.autentica(this.getPessoa().getEmail(), this.getPessoa().getSenha());
        if(logado){
            session.setAttribute("user", logado);
            rp.sendRedirect(rq.getContextPath() + "/pages/index.jsf");
            return "success";
        }else{
            session.setAttribute("user", null);
            session.removeAttribute("user");
            rp.sendRedirect(rq.getContextPath() + "/pages/login/login.jsf");
            return "failure";
        }
    }
	public String logout() {
		HttpServletRequest rq = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
		HttpServletResponse rp = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
		FacesContext facesContext = FacesContext.getCurrentInstance();
		HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(false);
		session.invalidate();
		try {
			rp.sendRedirect(rq.getContextPath() + "/pages/login/login.jsf");
		} catch (IOException e) {
			e.printStackTrace();
		}
		return "logoutOk";
	}

        //* *******************************FUNCOES BASICAS**********************************************************/
	public String save(){
		PessoaFacade pessoaService = new PessoaFacadeImpl();

		pessoaService.salva(this.pessoa);

		this.pessoa = new Pessoa();
		return "cadastraSucesso";
	}

	public String delete(){
		PessoaFacade pessoaService = new PessoaFacadeImpl();
		this.pessoa.setId(id);
		pessoaService.remove(this.pessoa);
		this.pessoa = new Pessoa();

		return "removeSucesso";
	}

	public String merge(){
		PessoaFacade pessoaService = new PessoaFacadeImpl();
		pessoaService.atualiza(this.pessoa);
		this.pessoa = new Pessoa();

		return "atualizaSucesso";
	}

	public String load(){
		PessoaFacade pessoaService = new PessoaFacadeImpl();
		this.pessoa = pessoaService.procura(this.id);

		return "pesquisaSucesso";
	}

   //* *******************************FUNCOES BASICAS*******FIM***************************************************/

        public String list(){
		PessoaFacade pessoaService = new PessoaFacadeImpl();
		this.setPessoa(pessoaService.procura(this.getId()));
		return "pesquisaSucesso";
	}
	public String pesquisaByNome(){
		PessoaFacadeImpl pessoaService = new PessoaFacadeImpl();
		this.setPessoa(pessoaService.procuraByNome(this.getPessoa().getNome()));
		return "pesquisaByNomeSucesso";
	}
       
        public List<Pessoa> getPessoasByNome(){
		PessoaFacade pessoaService = new PessoaFacadeImpl();
		List<Pessoa> lista = pessoaService.pesquisaPessoasByNome(this.getPessoa().getNome());
		return lista;
	}

        public List<Pessoa> getPessoasByMatricula(){//seta procura by matricula
		PessoaFacade pessoaService = new PessoaFacadeImpl();
		List<Pessoa> lista = pessoaService.pesquisaPessoasByMatricula(this.pessoa.getMatricula());
		return lista;
	}
         public String pesquisaByMatricula(){ //seta procura by matricula
		PessoaFacadeImpl pessoaService = new PessoaFacadeImpl();
		this.setPessoa(pessoaService.procuraByMatricula(this.getPessoa().getMatricula()));
		return "pesquisaByMatriculaSucesso";
	}
	public List<Pessoa> getPessoas(){
		PessoaFacade pessoaService = new PessoaFacadeImpl();		
		return pessoaService.lista();
	}
	
      	public Pessoa getPessoa() {
		return pessoa;
	}
	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
}

Erro Retornado :

Grande Abraço !

Muito Obrigado !

quando acontece o erro ?

Na hora de cadastrar da esse erro:

O que não estou conseguindo fazer e a ligação no Xhtml de Pessoas-----------------Mensalidades.

   tu tem um exemplo ai ?

o erro não deve ser no mapeamento do hibernate, pois se fosse o server não dava start!
não utilizo o jsf, mais verifique se ativou as validações! pq a exception é uma validação do faces!

ta assim o resultado, mas nao consigo fazer a ligação das duas tabelas !

O form ai em ciama ta assim :

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html 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:a4j="http://richfaces.org/a4j"
      xmlns:rich="http://richfaces.org/rich">
    <style type="text/css">
        .ecol1 { vertical-align: top; padding-right : 25px }
        .ecol2 { vertical-align: top; border-left: #ACBECE 1px solid; padding-left : 10px }
        .rich-calendar-tool-btn{
            font-family: Arial, Verdana;
        }
    </style>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <link rel="StyleSheet" type="text/css" href="../style/estilos.css" media="screen" />
    </head>
    <a4j:keepAlive beanName="pessoaMB" />
    <ui:composition template="/template/template.xhtml">
        <ui:define name="corpo">
            <rich:tabPanel switchType="ajax">
                <rich:tab label="Cadastro de Mensalidade">
                    <a4j:form>
                        <rich:messages />
                        <legend>Cadastro de Pessoa</legend>
                        <a4j:region id="regiaoAjax">
                            <a4j:status id="sts">
                                <f:facet name="start">
                                    <h:graphicImage value="/images/ajax-loader_1.gif" />
                                </f:facet>
                            </a4j:status>
                        </a4j:region>
         <!-- INICIA FORMULARIO-->
                        <fieldset>
                            <h:panelGrid columns="2" id="inputs">
                                <h:outputLabel for="matricula" value="Digite a Matrícula: " />
                                <h:inputText id="matriuclaInput" value="#{pessoaMB.pessoa.matricula}"  styleClass="inputPesquisa" >
                                <a4j:commandButton  value="Pesquisar" action="#{pessoaMB.pesquisaByMatricula}" styleClass="inputPesquisaBtn2" reRender="inputs,fisicas,pessoas">
                                </a4j:commandButton>
                                </h:inputText>
                                 <h:outputLabel for="id" value="CÓDIGO.: "  />
                                 <h:inputText id="id" value="#{mensalidadeMB.mensalidade.id}" styleClass="inputPesquisa3" size="4" >
                                 </h:inputText>
                             
                    <h:outputLabel for="Data Pagamento.:" value="Data Pagamento.: "  />
                    <rich:calendar id="data_pag" value="#{mensalidadeMB.mensalidade.data_pag}">
                    <a4j:support event="ondateselected" />
                    </rich:calendar>
                     <h:outputLabel for="valor" value="Valor.: ($)"/>
                                <h:inputText id="valor" value="#{mensalidadeMB.mensalidade.valor}" styleClass="edit" size="30">
                                </h:inputText>
             </h:panelGrid>
                            |<a4j:commandButton value="Inserir" action="#{mensalidadeMB.save}" status="sts" reRender="inputs,fisicas,pessoas" styleClass="botoes"/>
                            |<a4j:commandButton value="Deletar" action="#{mensalidadeMB.delete}" status="sts" reRender="inputs,fisicas,pessoas" styleClass="botoes"/>
                            |<a4j:commandButton value="Modificar" action="#{mensalidadeMB.merge}" status="sts" reRender="inputs,fisicas,pessoas" styleClass="botoes"/>
                            |<a4j:commandButton value="Listar" action="#{mensalidadeMB.list}" status="sts" reRender="inputs,fisicas,pessoas" styleClass="botoes"/>
                            |<a4j:commandButton value="Relatório" action="toCadastraMensalidade" status="sts" reRender="inputs,fisicas,pessoas" styleClass="botoes"/>
                            |<a4j:commandButton value="Menslidades" action="toCadastraMensalidade" immediate="true" styleClass="botoes"/>
                            |<a4j:commandButton value="Voltar" immediate="true" action="toIndex" styleClass="botoes"/>|
                        </fieldset>
                        <rich:messages />
                        <fieldset><legend>Atualização de Dados</legend>
                            <f:subview id="listauser">
                                    <rich:dataTable value="#{pessoaMB.pessoas}" var="pessoa" rows="5" id="pessoas" width="100%" cellspacing="0" cellpadding="0" border="5">
                                        <h:column>
                                            <f:facet name="header">
                                                <h:outputText value="MATRÍCULA" />
                                            </f:facet>
                                            <h:outputText value="#{pessoa.matricula}" />
                                        </h:column>
                                        <h:column>
                                            <f:facet name="header">
                                                <h:outputText value="NOME" />
                                            </f:facet>
                                            <h:outputText value="#{pessoa.nome}" />
                                        </h:column>
                                        <h:column>
                                            <f:facet name="header">
                                                <h:outputText value="STATUS" />
                                            </f:facet>
                                            <h:outputText value="#{pessoa.status}" />
                                        </h:column>
                                        <h:column>
                                            <f:facet name="header">
                                                <h:outputText value="Excluir"/>
                                            </f:facet>
                                            <a4j:commandLink action="#{pessoaMB.delete}" status="sts" reRender="inputs,fisicas,pessoas" >
                                                <h:outputText value="Excluir"/>
                                                <f:setPropertyActionListener value="#{pessoa.id}" target="#{pessoaMB.id}" /> <!-- pega  o id -->
                                            </a4j:commandLink>
                                        </h:column>
                                        <h:column>
                                            <f:facet name="header">
                                                <h:outputText value="Editar"/>
                                            </f:facet>
                                            <a4j:commandLink reRender="inputs,fisicas,pessoas" >
                                                <h:outputText value="Editar"/>
                                                <f:setPropertyActionListener value="#{pessoa}" target="#{pessoaMB.pessoa}" />
                                            </a4j:commandLink>
                                        </h:column>
                                        <f:facet name="footer">
                                            <rich:datascroller />
                                        </f:facet>
                                    </rich:dataTable>
                            </f:subview>
                            <f:subview id="listaumensalidade">
                            <rich:dataTable value="#{mensalidadeMB.mensalidades}" var="mensalidade" rows="5" id="mensalidades" width="100%" cellspacing="0" cellpadding="0" border="5">
                                        
                                        <h:column>
                                            <f:facet name="header">
                                                <h:outputText value="CÓDIGO" />
                                            </f:facet>
                                            <h:outputText value="#{mensalidade.id}" />
                                        </h:column>
                                        <h:column>
                                            <f:facet name="header">
                                                <h:outputText value="DATA/PAGAMENTO" />
                                            </f:facet>
                                            <h:outputText value="#{mensalidade.data_pag}" />
                                        </h:column>
                                        <h:column>
                                            <f:facet name="header">
                                                <h:outputText value="VALOR" />
                                            </f:facet>
                                            <h:outputText value="#{mensalidade.valor}" />
                                        </h:column>
                                       
                                        <h:column>
                                            <f:facet name="header">
                                                <h:outputText value="Excluir"/>
                                            </f:facet>
                                            <a4j:commandLink action="#{mensalidadeMB.delete}" status="sts" reRender="inputs,mensalidade,mensalidades" >
                                                <h:outputText value="Excluir"/>
                                                <f:setPropertyActionListener value="#{mensalidade.id}" target="#{mensalidadeMB.id}" /> <!-- pega  o id -->
                                            </a4j:commandLink>
                                        </h:column>
                                        <h:column>
                                            <f:facet name="header">
                                                <h:outputText value="Editar"/>
                                            </f:facet>
                                            <a4j:commandLink reRender="inputs,mensalidade,mensalidades" >
                                                <h:outputText value="Editar"/>
                                                <f:setPropertyActionListener value="#{mensalidade}" target="#{mesalidadeMB.mensalidade}" />
                                            </a4j:commandLink>
                                        </h:column>
                                        <f:facet name="footer">
                                            <rich:datascroller />
                                        </f:facet>
                                    </rich:dataTable>
                            </f:subview>
                       </fieldset>
                    </a4j:form>
                </rich:tab>
                <!-- ****************************************************************** TAB LISTA DE PESSOAS********************************************-->
                <rich:tab label="Lista de Pessoas">
                    <f:subview id="listauser">
                        <a4j:form>
                            <rich:messages />
                            <fieldset>
                                <a4j:region id="regiaoAjax">
                                    <a4j:status id="sts">
                                        <f:facet name="start">
                                            <h:graphicImage value="/images/ajax-loader_1.gif" />
                                        </f:facet>
                                    </a4j:status>
                                </a4j:region>
                                <h:panelGrid columns="2" id="inputs">
                                    <h:outputLabel for="nomeLabel" value="Digite o Nome: " />
                                    <h:inputText id="nomeInput" value="#{pessoaMB.pessoa.nome}" style=" width : 250px;"  styleClass="inputPesquisa">
                                        <a4j:commandButton value="Pesquisar" action="#{pessoaMB.pesquisaByNome}" reRender="pessoas">
                                        </a4j:commandButton>
                                    </h:inputText>
                                </h:panelGrid>
                            </fieldset>
                            <rich:dataTable value="#{pessoaMB.pessoas}" var="pessoa" rows="10" id="pessoas" width="100%" cellspacing="0" cellpadding="0" border="1">
                                <h:column>
                                    <f:facet name="header">
                                        <h:outputText value="MATRÍCULA" />
                                    </f:facet>
                                    <h:outputText value="#{pessoaMB.pessoa.matricula}" />
                                </h:column>
                                <h:column>
                                    <f:facet name="header">
                                        <h:outputText value="NOME" />
                                    </f:facet>
                                    <h:outputText value="#{pessoaMB.pessoa.nome}" />
                                </h:column>
                                <h:column>
                                    <f:facet name="header">
                                        <h:outputText value="E-MAIL" />
                                    </f:facet>
                                    <h:outputText value="#{pessoaMB.pessoa.email}" />
                                </h:column>
                                <h:column>
                                    <f:facet name="header">
                                        <h:outputText value="CPF" />
                                    </f:facet>
                                    <h:outputText value="#{pessoaMB.pessoa.cpf}" />
                                </h:column>
                                <h:column>
                                    <f:facet name="header">
                                        <h:outputText value="DATA NASC." />
                                    </f:facet>
                                    <h:outputText value="#{pessoaMB.pessoa.data_nasc}">
                                        <f:convertDateTime pattern="dd/MM/yyyy" />
                                    </h:outputText>
                                </h:column>
                                <h:column>
                                    <f:facet name="header">
                                        <h:outputText value="CELULAR" />
                                    </f:facet>
                                    <h:outputText value="#{pessoaMB.pessoa.celular}" />
                                </h:column>
                                <h:column>
                                    <f:facet name="header">
                                        <h:outputText value="Excluir"/>
                                    </f:facet>
                                    <a4j:commandLink action="#{pessoaMB.delete}" status="sts" reRender="inputs,fisicas,pessoas" >
                                        <h:outputText value="Excluir"/>
                                        <f:setPropertyActionListener value="#{pessoa.id}" target="#{pessoaMB.id}" />
                                    </a4j:commandLink>
                                </h:column>
                                <h:column>
                                    <f:facet name="header">
                                        <h:outputText value="Editar"/>
                                    </f:facet>
                                    <a4j:commandLink reRender="inputs,fisicas,pessoas" >
                                        <h:outputText value="Editar"/>
                                        <f:setPropertyActionListener value="#{pessoa}" target="#{pessoaMB.pessoa}" />
                                    </a4j:commandLink>
                                </h:column>
                                <f:facet name="footer">
                                    <rich:datascroller />
                                </f:facet>
                            </rich:dataTable>
                        </a4j:form>

                    </f:subview>
                </rich:tab>
                <!-- ******************************FIM************************************ TAB LISTA DE PESSOAS********************************************-->
                <rich:tab label="Filtros">
                </rich:tab>
                <rich:tab label="Relatórios">
                </rich:tab>
            </rich:tabPanel>
        </ui:define>
    </ui:composition>
</html>