Mapeamento Hibernate Annotation

Boa tarde pessoal seguinte… estou começando agora a utilizar o hibernate e estou com duvidas em mapeamento

tenho minha classe Pedido

[code]package br.com.projeto.beans;

import java.util.Date;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;

import javax.persistence.OneToOne;

import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

@Entity
public class Pedido {

@Id
@GeneratedValue
private Integer id;
private Date dataPedido;
private Float valorTotal;
@OneToOne(cascade = javax.persistence.CascadeType.PERSIST)
@JoinColumn(name = "id")
@Fetch(FetchMode.JOIN)
private Pessoa pessoa;



public Pessoa getPessoa() {
	return pessoa;
}

public void setPessoa(Pessoa pessoa) {
	this.pessoa = pessoa;
}

public Integer getId() {
	return id;
}

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

public Date getDataPedido() {
	return dataPedido;
}

public void setDataPedido(Date dataPedido) {
	this.dataPedido = dataPedido;
}

public Float getValorTotal() {
	return valorTotal;
}

public void setValorTotal(Float valorTotal) {
	this.valorTotal = valorTotal;
}

}

[/code]

minha classe produto

[code]package br.com.projeto.beans;

import java.util.Collection;

import javax.persistence.Entity;

import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;

import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

@Entity
public class Produto {

@Id
@GeneratedValue
private Integer id;
private String descricao;
private Integer quantidade;
private Float precoCusto;
private Float precoVenda;
private String obs;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "id_pessoafornecedor")
private Fornecedor fornecedor;
@OneToMany(cascade = javax.persistence.CascadeType.PERSIST)
@JoinColumn(name = "id")	
private Collection<Itens> itens;

public Collection<Itens> getItens() {
	return itens;
}

public void setItens(Collection<Itens> itens) {
	this.itens = itens;
}

public String getObs() {
	return obs;
}

public void setObs(String obs) {
	this.obs = obs;
}

public Fornecedor getFornecedor() {
	return fornecedor;
}

public void setFornecedor(Fornecedor fornecedor) {
	this.fornecedor = fornecedor;
}

public Integer getId() {
	return id;
}

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

public String getDescricao() {
	return descricao;
}

public void setDescricao(String descricao) {
	this.descricao = descricao;
}

public Integer getQuantidade() {
	return quantidade;
}

public void setQuantidade(Integer quantidade) {
	this.quantidade = quantidade;
}

public Float getPrecoCusto() {
	return precoCusto;
}

public void setPrecoCusto(Float precoCusto) {
	this.precoCusto = precoCusto;
}

public Float getPrecoVenda() {
	return precoVenda;
}

public void setPrecoVenda(Float precoVenda) {
	this.precoVenda = precoVenda;
}

}
[/code]

e minha classe itens

[code]package br.com.projeto.beans;

import java.util.Collection;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;

@Entity
public class Itens {

@Id
@GeneratedValue
private Integer id;
private Integer quantidade;
@ManyToMany(cascade = javax.persistence.CascadeType.PERSIST)
@JoinColumn(name = "id")
private Collection<Produto> produto;



public Collection<Produto> getProduto() {
	return produto;
}

public void setProduto(Collection<Produto> produto) {
	this.produto = produto;
}

public Integer getId() {
	return id;
}

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

public Integer getQuantidade() {
	return quantidade;
}

public void setQuantidade(Integer quantidade) {
	this.quantidade = quantidade;
}

}
[/code]

minnha duvida é como fazer o mapeamento entre elas, quero fazer atraves de annotations

obrigado

Você pode fazer a relação usando as anotações
@ManyToMany @OneToMany @OneToOne @ManyToOne

Pelo exemplo que você postou você está usando, qual é realmente sua dúvida.

é que não sei como ficaria o relacionamento entre essas tabelas

o nome das anotações já dizem o que elas fazem.

Ou seja você pode usar as seguintes anotações

OneToOne uma por uma
OneToMany uma para muitas
etc.

Espero ter ajudado.

problema

[code]package br.com.projeto.beans;

import java.util.Collection;
import java.util.Date;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;

import javax.persistence.OneToOne;

import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

@Entity
public class Pedido {

@Id
@GeneratedValue
private Integer id;
private Date dataPedido;
private Float valorTotal;
@OneToOne(cascade = javax.persistence.CascadeType.PERSIST)
@JoinColumn(name = "id")
@Fetch(FetchMode.JOIN)
private Pessoa pessoa;

@OneToMany(cascade = javax.persistence.CascadeType.PERSIST)
@JoinColumn(name = "id")
@Fetch(FetchMode.JOIN)
private Collection<Itens> itens;

@OneToMany(cascade = javax.persistence.CascadeType.PERSIST)
@JoinColumn(name = "id")
@Fetch(FetchMode.JOIN)
private Collection<TipoDeServico> tipoDeServico;

public Collection<TipoDeServico> getTipoDeServico() {
	return tipoDeServico;
}

public void setTipoDeServico(Collection<TipoDeServico> tipoDeServico) {
	this.tipoDeServico = tipoDeServico;
}

public Collection<Itens> getItens() {
	return itens;
}

public void setItens(Collection<Itens> itens) {
	this.itens = itens;
}

public Pessoa getPessoa() {
	return pessoa;
}

public void setPessoa(Pessoa pessoa) {
	this.pessoa = pessoa;
}

public Integer getId() {
	return id;
}

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

public Date getDataPedido() {
	return dataPedido;
}

public void setDataPedido(Date dataPedido) {
	this.dataPedido = dataPedido;
}

public Float getValorTotal() {
	return valorTotal;
}

public void setValorTotal(Float valorTotal) {
	this.valorTotal = valorTotal;
}

}
[/code]

GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/Projeto_Faculdade] threw exception [/CadastroFornecedor.jsp(67,3) ‘#{fornecedorBean.listfornecedor != null}’ Error reading ‘listfornecedor’ on type br.com.projeto.controller.FornecedorBean] with root cause
org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags
at org.hibernate.loader.BasicLoader.postInstantiate(BasicLoader.java:94)
at org.hibernate.loader.entity.EntityLoader.(EntityLoader.java:120)
at org.hibernate.loader.entity.EntityLoader.(EntityLoader.java:72)
at org.hibernate.loader.entity.EntityLoader.(EntityLoader.java:55)
at org.hibernate.loader.entity.BatchingEntityLoader.createBatchingEntityLoader(BatchingEntityLoader.java:133)
at org.hibernate.persister.entity.AbstractEntityPersister.createEntityLoader(AbstractEntityPersister.java:1898)
at org.hibernate.persister.entity.AbstractEntityPersister.createEntityLoader(AbstractEntityPersister.java:1921)
at org.hibernate.persister.entity.AbstractEntityPersister.createLoaders(AbstractEntityPersister.java:3182)
at org.hibernate.persister.entity.AbstractEntityPersister.postInstantiate(AbstractEntityPersister.java:3175)
at org.hibernate.persister.entity.SingleTableEntityPersister.postInstantiate(SingleTableEntityPersister.java:728)
at org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:357)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1385)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
at br.com.projeto.util.HibernateUtil.(HibernateUtil.java:17)
at br.com.projeto.dao.HibernateDao.getBeans(HibernateDao.java:47)
at br.com.projeto.controller.FornecedorBean.getListfornecedor(FornecedorBean.java:73)
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 javax.el.BeanELResolver.getValue(BeanELResolver.java:87)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
at org.apache.el.parser.AstValue.getValue(AstValue.java:169)
at org.apache.el.parser.AstNotEqual.getValue(AstNotEqual.java:38)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:106)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:193)
at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:421)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1646)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:853)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1652)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1655)
at com.sun.faces.application.view.JspViewHandlingStrategy.doRenderView(JspViewHandlingStrategy.java:431)
at com.sun.faces.application.view.JspViewHandlingStrategy.renderView(JspViewHandlingStrategy.java:233)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:509)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

Mude de Collection<…> para Set<…> para corrigir esse erro.

pow obrigado quebro um galhão

só não entendi esse set ele vai uma coleção de itens tmb?

Sim, vc só vai trocar de Collection para java.util.Set, que é uma sub-interface de Collection(não sei se essa era sua dúvida).

Eu tive muito esse problema quando sai do mapeamento via XML para mapeamento usando anotações, agora sempre mapeio usando Set.

agora entendi só mais uma duvida eu importo o set do java.util?

Isso. java.util.Set.