Mapeamento com dois relacionamentos entre a mesma tabela

11 respostas
H

Pessoal,

estou com um problema tenho uma tabela no banco que tem duas colunas que referenciam a mesma tabela porem não sei como mapear isso.

Fiz algo parecido com isso:

@Entity
public class Entidade1{
          
          @Id
          @GeneratedValue
          private Long id;

         //outras  propriedades
        //gets & sets
}

@Entity
public class Entidade2{
         
          @Id
          @GeneratedValue
          private  Long id;

          @OneToOne
          private Entidade1 entidade1;

          @OneToOne
          private Entidade1 entidade1_seg;

          //outras  propriedades
        //gets & sets        
}

seria algo parecido com isso
porem não sei como mapear isso na Entidade1

obrigado

11 Respostas

Hebert_Coelho

Desse modo como você fez deu erro?

H

não deu erro porem não sei como mapear isso na entidade1

obrigado

H

não deu erro porem não sei como mapear isso na entidade1

obrigado

E

Cara, aqui no meu tenho uma classe chama calculo, dentro dela se relaciona quatro vezes com a mesma tabela, chama hidrante, segue abaixo o exemplo de como eu faco.

@ManyToOne(cascade={CascadeType.DETACH},fetch=FetchType.LAZY)
	@JoinColumn(name="\"calc1HidranteIdDesfavoravel1\"", nullable=false)
	private H2oHidrante calc1HidranteIdDesfavoravel1;
	
	@ManyToOne(cascade={CascadeType.DETACH},fetch=FetchType.LAZY)
	@JoinColumn(name="\"calc1HidranteIdDesfavoravel2\"", nullable=false)
	private H2oHidrante calc1HidranteIdDesfavoravel2;

Espero que ajude, abs,

Evandro

Hebert_Coelho

Uai, do modo como vc mapeou! O.o

Mas supor vc tem a classe criança

public class Crianca{ Pessoa pai; Pessoa mae; }

basta colocar a anotação.

A

cara,

vc tem que fazer assim,

@Entity  
    public class Entidade1{  
                
              @Id  
              @GeneratedValue  
              private Long id;  
      
             //outras  propriedades  
            //gets & sets  
    }  
      
    @Entity  
    public class Entidade2{  
               
              @Id  
              @GeneratedValue  
              private  Long id;  
      
              @OneToOne(fetch=FetchType.LAZY, cascade = CascadeType.ALL)
			  @JoinColumn(name="CHAVE_FK", referencedColumnName="CHAVE_PK")
              private Entidade1 entidade1;  
                
			  @OneToOne(fetch=FetchType.LAZY, cascade = CascadeType.ALL)
			  @JoinColumn(name="CHAVE_FK", referencedColumnName="CHAVE_PK")
              private Entidade1 entidade1_seg;  
      
              //outras  propriedades  
            //gets & sets          
    }

t+

H

Pessoal obrigado pelas dicas eu até vi algumas coisas que não conhecia mais minha duvida é mapear a entidade2 na entidade1

@Entity    
    public class Entidade1{    
                  
              @Id    
              @GeneratedValue    
              private Long id;    
              
              @OneToOne
              private Entidade2 entidade2;
        
             //outras  propriedades    
            //gets & sets    
}

obrigado

A

ja te passei ai no post acima.

t+

Hebert_Coelho

Se vc esta com dúvidas de mapeamento, olhe esse esse post, pode te ajudar: “@OneToOne Unidirecional e Bidirecional

H

e para fazer o mapeamento bidirecional nesse caso como eu poderia fazer?

obrigado

A

segue,

@Entity    
    public class Entidade1{    
                  
              @Id    
              @GeneratedValue    
              private Long id;   
				
				@OneToOne(mappedBy="entidade1", fetch=FetchType.LAZY)
				private Entidade2 entidade2;
				
				@OneToOne(mappedBy="entidade1_seg", fetch=FetchType.LAZY)
				private Entidade2 entidade2_seg;
        
             //outras  propriedades    
            //gets & sets    
    }    
        
    @Entity    
    public class Entidade2{    
                 
              @Id    
              @GeneratedValue    
              private  Long id;    
        
              @OneToOne(fetch=FetchType.LAZY, cascade = CascadeType.ALL)  
              @JoinColumn(name="CHAVE_FK", referencedColumnName="CHAVE_PK")  
              private Entidade1 entidade1;    
                  
              @OneToOne(fetch=FetchType.LAZY, cascade = CascadeType.ALL)  
              @JoinColumn(name="CHAVE_FK", referencedColumnName="CHAVE_PK")  
              private Entidade1 entidade1_seg;    
        
              //outras  propriedades    
            //gets & sets            
    }

t+

Criado 4 de novembro de 2011
Ultima resposta 4 de nov. de 2011
Respostas 11
Participantes 4