OneToMany?

Pessoal, eu estou apanhando para Anotações@ vejam só :


 //*************************************************//
/*  relacionamento 1 para n
 *
 //*************************************************/
     @OneToMany(mappedBy="pessoa_id")
      private List<Mensalidade> men_id;

 //*************************************************//
/*  relacionamento n para 1
 *
 //*************************************************/
  @ManyToOne(fetch=FetchType.LAZY)
  @JoinColumn(name="men_id")
  private Pessoa pessoa_id;

Tem algum erro aqui ?

Aparentemente não…Se trata de um @OneToMany multidirecional…

Tem algum erro aparecendo no banco, como referência cirular por exemplo?

Simplesmente não lista os detalhes ! e da um erro na hora de logar no sistema, desfiz as anotações e funciona normal:

erro e classes completa !

An Error Occurred:
Error calling action method of component with id j_id7:botao

Caused by:
org.hibernate.AnnotationException - Use of @OneToMany or @ManyToMany targeting an unmapped class: br.gov.nutec.modelo.Pessoa.men_id[br.gov.nutec.modelo.Mensalidade]
+- Stack Trace

javax.faces.FacesException: Error calling action method of component with id j_id7:botao
	at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:72)
	at javax.faces.component.UICommand.broadcast(UICommand.java:143)
	at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
	at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
	at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
	at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)
	at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
	at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:103)
	at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:76)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:151)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at br.gov.nutec.filtro.AuthFilter.doFilter(AuthFilter.java:27)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
	at java.lang.Thread.run(Thread.java:619)
Caused by: javax.faces.el.EvaluationException: javax.el.ELException: /pages/login/login.xhtml @61,79 action="#{pessoaMB.login}": org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: br.gov.nutec.modelo.Pessoa.men_id[br.gov.nutec.modelo.Mensalidade]
	at javax.faces.component._MethodExpressionToMethodBinding.invoke(_MethodExpressionToMethodBinding.java:82)
	at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:57)
	... 33 more
Caused by: javax.el.ELException: /pages/login/login.xhtml @61,79 action="#{pessoaMB.login}": org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: br.gov.nutec.modelo.Pessoa.men_id[br.gov.nutec.modelo.Mensalidade]
	at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:74)
	at javax.faces.component._MethodExpressionToMethodBinding.invoke(_MethodExpressionToMethodBinding.java:78)
	... 34 more
Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: br.gov.nutec.modelo.Pessoa.men_id[br.gov.nutec.modelo.Mensalidade]
	at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1071)
	at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:602)
	at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:543)
	at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:66)
	at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1177)
	at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:329)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1333)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
	at br.gov.nutec.facade.PessoaFacadeImpl.autentica(PessoaFacadeImpl.java:110)
	at br.gov.nutec.mb.PessoaMB.login(PessoaMB.java:35)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:172)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
	at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
	... 35 more

*********************************PESSOA.JAVA

package br.gov.nutec.modelo;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;

@Entity
@Table(name="pessoa")
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)
	@Column(name="pessoa_id")   // chave primaria
	private Long id;


 //*************************************************//
/*  relacionamento 1 para n
 *
 //*************************************************/
     @OneToMany(mappedBy="pessoa_id")
      private List<Mensalidade> men_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;

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

	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;
    }

/** get set

*********************************MENSALIDADE.JAVA

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.validator.NotNull;
@Entity
@Table(name="mensalidade")
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.IDENTITY)
	@Column(name="men_id")   // chave primaria
	private Long id;

 //*************************************************//
/*  relacionamento n para 1
 *
 //*************************************************/
  @ManyToOne(fetch=FetchType.LAZY)
  @JoinColumn(name="men_id")
  private Pessoa pessoa_id;


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

        @Column(name="valor")
        private Long valor;
        @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;
    }

Quando eu rodo minha classe GerarBanco.java, ele da este erro:

init:
deps-module-jar:
deps-ear-jar:
deps-jar:
compile-single:
run-main:
07:38:11,671  INFO Version:15 - Hibernate Annotations 3.4.0.GA
07:38:11,681  INFO Environment:560 - Hibernate 3.3.2.GA
07:38:11,687  INFO Environment:593 - hibernate.properties not found
07:38:11,689  INFO Environment:771 - Bytecode provider name : javassist
07:38:11,692  INFO Environment:652 - using JDK 1.4 java.sql.Timestamp handling
07:38:11,740  INFO Version:14 - Hibernate Commons Annotations 3.1.0.GA
07:38:11,742  INFO Configuration:1474 - configuring from resource: /hibernate.cfg.xml
07:38:11,742  INFO Configuration:1451 - Configuration resource: /hibernate.cfg.xml
07:38:11,846  INFO Configuration:1589 - Configured SessionFactory: null
07:38:11,862  INFO Dialect:175 - Using dialect: org.hibernate.dialect.PostgreSQLDialect
07:38:11,924  INFO AnnotationBinder:419 - Binding entity from annotated class: br.gov.nutec.modelo.Pessoa
07:38:11,965  INFO EntityBinder:422 - Bind entity br.gov.nutec.modelo.Pessoa on table pessoa
07:38:12,034  INFO AnnotationBinder:419 - Binding entity from annotated class: br.gov.nutec.modelo.Clientef
07:38:12,035  INFO EntityBinder:422 - Bind entity br.gov.nutec.modelo.Clientef on table clientef
Exception in thread "main" org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: br.gov.nutec.modelo.Pessoa.men_id[br.gov.nutec.modelo.Mensalidade]
        at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1071)
        at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:602)
        at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:543)
        at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:66)
        at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1177)
        at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:329)
        at org.hibernate.cfg.Configuration.generateDropSchemaScript(Configuration.java:803)
        at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:128)
        at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:91)
        at br.gov.nutec.util.GerarTabelas.main(GerarTabelas.java:12)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)

Boa noite

Voce tem no banco de dados, na entidade Pessoa o atributo men_id realmente?
Não parece que tem!

Realmente foi bem observado ! não tenho !

Então basta colocar o nome do campo correspondente a pessoa no seu banco de dados e dar continuidade.

Até a próxima

Estou seguindo este padrão agora :

package br.com.jeebrasil.hibernate.anotacoes.dominio;
import java.util.Collection;
import javax.persistence.*;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
@Entity @Table(schema="anotacoes")
public class Universidade {
      @Id
      @GeneratedValue(strategy = GenerationType.SEQUENCE)
      @Column(name="id_universidade")
      private int id;
      private String nome;
      @OneToMany(mappedBy="universidade", fetch = FetchType.LAZY)
      @Cascade(CascadeType.ALL)
      private Collection<Centro> centros;
      //Métodos getters e setters
      //...
}
package br.com.jeebrasil.hibernate.anotacoes.dominio;
import javax.persistence.*;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
@Entity @Table(schema="anotacoes")
public class Centro {
      @Id @GeneratedValue(strategy = GenerationType.SEQUENCE)
      @Column(name="id_centro")
      private int id;
      private String nome;
  @ManyToOne(fetch = FetchType.EAGER)
  @JoinColumn(name="id_universidade",
                    insertable=true, updatable=true)
  @Fetch(FetchMode.JOIN)
  @Cascade(CascadeType.SAVE_UPDATE)
  private Universidade universidade;  //Métodos getters e setters
  //...
}