Mapeamento com Hibernate Annotations

[b]

Estou tentanto efetuar uma mapiamento no hibernate 0…1 ou o…N e não estou obtendo sucesso.
Alguem poderia dar uma ajuda ???

[/b]

Bom …
posta seu codigo ai pra gente dar uma olhada.

Poste o seu código, que tentaremos ajudar. :slight_smile:


Um cliente tem 0 ou 1 pomotor ,
um Supervisor tem 1…N promotores.

Clientes



@Entity(name="clientes")
public class ClientesEntity implements Serializable {

    @Id
    @Column(name="NUM_CPF")
    private String cpfCliente;

    @Column(name="DES_Nome")
    private String nomeCliente;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="NUM_CPF_Promotor",referencedColumnName="NUM_CPF",nullable=true)
    private PromotoresEntity promotor;

Promotor

@Entity
@Table(name = "promotores")
public class PromotoresEntity implements Serializable {

    @Id
    @Column(name = "NUM_CPF")
    private String cpfPromotor;
    
    @Column(name = "DES_Nome")
    private String nomePromotor;
    
    @Column(name="FLG_Ativo")
    private int statusPromotor;
    
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "NUM_CPF_Surpevisor", referencedColumnName = "NUM_CPF") 
    private SupervisoresEntity supervisor;

Supervisor

@Entity
@Table(name="supervisores")
public class SupervisoresEntity implements Serializable{

    @Id
    @Column(name="NUM_CPF")
    private String cpfSupervisor;

    @Column(name="DES_Nome")
    private String nomeSupervisor;

    @Column(name="FLG_Ativo")
    private int statusSupervisor;

Brother, e qual seria sua dúvida? Tu quer implementar a lógica para não deixar passar desses limites de cardinalidade ou é só o mapeamento sua dúvida?

[b] Eu fiz a uma inclusão de um cliente sem nenhum Promotor(o campo que faz referência ao promotor está null, pois um cliente pode der 0…1 promotor),quando eu tento selecionar esse cliente para editar ou visualizar seus dados ele apresenta o seguinte Erro.

javax.servlet.ServletException: #{cliente.selecionaAlterarCliente}: org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [br.com.ugp.entity.PromotoresEntity#]
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:177)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:380)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
[/b]

Se para o cliente o promotor não é obrigatório e é apenas 1
use apenas o @JoinColumn
e pronto

… na verdade acho que não precisa de nada em cima
apenas os get e set na classe cliente

vc esta fazendo o hibernate gerar o banco pra ti? ou é um banco pronto?

esperimente fazer o hibernate gerar o banco para vc…numa base de testes
e olhe a saida no console… vais ver como ele esta fazendo as tabelas e gerandos as chaves estrangeiras

[quote=dyorgio]Se para o cliente o promotor não é obrigatório e é apenas 1
use apenas o @JoinColumn
e pronto

… na verdade acho que não precisa de nada em cima
apenas os get e set na classe cliente

vc esta fazendo o hibernate gerar o banco pra ti? ou é um banco pronto?

esperimente fazer o hibernate gerar o banco para vc…numa base de testes
e olhe a saida no console… vais ver como ele esta fazendo as tabelas e gerandos as chaves estrangeiras[/quote]
[/b]

É um banco de dados pronto.
preciso do Mapeamento p/ preservar a integridade das informações.
como ficaria dessa maneira que você citou???

[b]

ficaria igual, sem a annotation de @ManyToOne
mais tarde verei melhor isso em casa…pois estou chutando