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 !