@OneToMany com uma chave composta

3 respostas
B

Boa Tarde,

Estou fazendo um trabalho e tenho a seguinte situação:

Tenho uma classe Agencia que possui uma lista de ContasCorrentes. No BD a PK de Agencia é composta por (NUMERO_AGENCIA e DIGITO_AGENCIA) e esses 2 campos estão como FK na tabela Conta_Corrente.

Eu tentei fazer o Join das duas mas na hora de inserir no banco os valores de (NUMERO_AGENCIA e DIGITO_AGENCIA) em conta_corrente fica nulo x.x, segue o codigo que eu fiz.

@Entity
@Table(name = "agencia")
public class Agencia implements Serializable {

    @EmbeddedId
    private AgenciaPK id;    
    
    @OneToMany(cascade = {CascadeType.ALL})
    @JoinColumns({
        @JoinColumn(name = "numero_agencia", referencedColumnName = "numero_agencia"),
        @JoinColumn(name = "digito_agencia", referencedColumnName = "digito_agencia")
    })
    List<ContaCorrente> listaContas; 
   ...
@Embeddable
public class AgenciaPK implements Serializable {
    
    @Column(name = "numero_agencia")
    Integer numero;    
    @Column(name = "digito_agencia")
    Integer digito;
    ...
@Entity
@Table(name = "conta_corrente")
public class ContaCorrente implements Serializable{  

    @EmbeddedId
    private ContaCorrentePK id;
  ...
@Embeddable
public class ContaCorrentePK implements Serializable{ 

    @Column(name="numero_cc")
    private Integer numero;    
   
    @Column(name="digito_cc")
    private int digito;
    ...

Se alguem souber como me ajudar eu agradeço!

vlw

3 Respostas

A

cara,

ve esse link ai http://www.guj.com.br/java/248978-resolvido-duvida-sobre-pk-e-erro-ao-inserir-no-banco-de-dados-usando-pk-gerado-pelo-netbeans

t+

B

Dei uma olhada no topico (especialmente na parte q vc postou o código).
Mas eu não entendi direito. No caso meu caso, eu teria que colocar um objeto “Agencia” na “ContaCorrente”.

Mais dai vai ser bidirecional não? o meu relacionamento é pra ser unidirecional.

Fico no aguardo.

altitdb

Bahir,

fiz um desses pra um amigo esses dias…

Upei no github, da uma olhada la.

Abraço.

Criado 18 de outubro de 2011
Ultima resposta 18 de out. de 2011
Respostas 3
Participantes 3