Problema com Chaves Compostas

4 respostas
erickmelo

Pessoal,

Estou quebrando a cabeça aqui pra fazer um relacionamento utilizando chaves compostas (Toplink)

Se alguém puder me dar uma luz… Segue código.

Chave composta

@Embeddable
public class AvaliacaoDistribuicaoPK implements Serializable {
    
    private AvaliacaoPDV avaliacao;
    
    private ModeloDistribuicao item;
...
}

@Entity

Código da classe

public class AvaliacaoDistribuicao implements Serializable {   
    
    @EmbeddedId
    private AvaliacaoDistribuicaoPK id;
    
    @Enumerated(EnumType.STRING)
    private Resultado resultado;
...
}

Entity [AvaliacaoDistribuicao] uses [AvaliacaoDistribuicaoPK] as embedded id class whose access-type has been determined as [FIELD]. But [class AvaliacaoDistribuicaoPK] does not define any [FIELD]. It is likely that you have not provided sufficient metadata in your id class [class AvaliacaoDistribuicaoPK].

[]s

4 Respostas

nicoweda

Qual é a duvida?

erickmelo

Isso simplesmente não funciona… é reportado o erro

joede.fadel

não entendi mto bem oq vc tah qrendo mais vamos lá:

@Embeddable
public class ItemnotaPK implements Serializable {

    @Column(name = "estoqueidproduto", nullable = false)
    private Integer estoqueidproduto;

    @Column(name = "notaidnota", nullable = false)
    private Integer notaidnota;

...

classe itemNota

@Entity
@Table(name = "itemnota")

public class Itemnota implements Serializable {
    /**
     * Campo de chave primária embutido
     */
    @EmbeddedId
    protected ItemnotaPK itemnotaPK;

    @Column(name = "qtdproduto")
    private Integer qtdproduto;

    @JoinColumn(name = "estoqueidproduto", referencedColumnName = "idproduto", insertable = false, updatable = false)
    @ManyToOne
    private Estoque estoque;

    @JoinColumn(name = "notaidnota", referencedColumnName = "idnota", insertable = false, updatable = false)
    @ManyToOne
    private Nota nota;

....

é isso q vc realmente tah querendo saber?????

ah e se vc for fazer uma consulta, vc tem q fazer desta forma

SELECT i FROM Itemnota i WHERE i.itemnotaPK.estoqueidproduto = estoqueidproduto
joede.fadel

da proxima vez q vc for postar alguma duvida especifique melhor qual eh.

Criado 7 de dezembro de 2007
Ultima resposta 7 de dez. de 2007
Respostas 4
Participantes 3