Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Dúvida Relacionamento de Objetos JPA.

Olá, pessoal!

Será que alguém pode me ajudar? Estou com um problema para fazer um relacionamento entre duas classes. Eu tenho uma classe Produto:

@Entity
public class Produto {
    @Id
    private String codigo;
    private String descricao;
    @ElementCollection(fetch = FetchType.EAGER)
    private List<Componente> componentes;
    ...

Bem, até aqui tudo bem, minha classe tem uma coleção de componentes, que é constituída de um outro produto e quantidade:

@Embeddable
public class Componente {

    @ManyToOne
    private Produto produto;
    private Produto produtoFilho;
    private BigDecimal quantidade;
    ...
}

Mas aqui que está o problema! Cada componente é constituído de um ProdutoFilho (mesma classe do objeto que o possui mas uma instância diferente) e uma quantidade, mas eu não consigo mapear para que minha tabela de componentes tenha uma referência ao produto que a possui e ao produtoFilho que ela possui.

O erro ao tentar executar o projeto é o seguinte:

Error creating bean with name 'localContainerEntityManagerFactoryBean' defined in class br.com.ortosintese.custos.conf.JPAConfiguration: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory
4 respostas

Não faltou mais um @ManyToOne no produtoFilho? Caso não seja isso, pode postar a exception inteira?

solução!

Deixei minha classe Componente assim... Não sei se é a melhor maneira de utilizar, mas como é um objeto embeddable não tem chave primária na tabela. Então a relação ficou assim:

@Embeddable
public class Componente {

    @OneToOne
    private Produto produtoFilho;
    private BigDecimal quantidade;

E a exception? Ou agora tá funcionando?

Funcionou quando fiz isso...

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software