1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

JPA ERRO ao criar tabelas

Boa tarde. Estou me deparando com um erro ao criar as tabelas da minha aplicacao.

Caused by: org.hibernate.AnnotationException: A Foreign key refering br.com.sistema.entidade.CarrinhoDeCompras from br.com.sistema.entidade.Venda has the wrong number of column. should be 2
    at org.hibernate.cfg.annotations.TableBinder.bindFk(TableBinder.java:429)
    at org.hibernate.cfg.annotations.CollectionBinder.bindManytoManyInverseFk(CollectionBinder.java:1527)
    at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1428)
    at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:710)
    at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:645)
    at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:65)
    at org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1716)
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1423)
    at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1375)
    at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1519)
    at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:193)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1100)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:282)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:366)
    ... 41 more

Segue as entidades:

@Embeddable
public class CarrinhoDeComprasID implements Serializable{

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name="id_produto")
    @Cascade(CascadeType.SAVE_UPDATE)
    private Produto produto;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "id_venda")
    @Cascade(CascadeType.SAVE_UPDATE)
    private Venda venda;
@Entity
@Table(name="TB_Carrinho")
public class CarrinhoDeCompras implements Serializable{

    private static final long serialVersionUID = 1L;
    @EmbeddedId
    private CarrinhoDeComprasID carrinhoID;

    private Integer quantidade;
@Entity
@Table(name="TB_VENDA")
public class Venda implements Serializable{

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue
    @Column(name="venda_id")
    private Integer vendaId;
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="id_cliente", nullable=false) // No banco esse campo vai se chamar id_cliente | Não pode ser nulo
    private Cliente cliente;

    @ManyToMany(fetch=FetchType.LAZY)
    @JoinTable(name="TB_Carrinho", joinColumns={@JoinColumn(name="id_venda")}, inverseJoinColumns={@JoinColumn(name="id_produto")})
    private List<CarrinhoDeCompras> produto;

    @Column(name="data_venda")
    @Temporal(TemporalType.DATE)
    private Date dataVenda;
    private Double valorTotal;
    @Column(name="flag_venda_ativa")
    private Integer flagVendaAtiva;
@Entity
@Table(name="TB_PRODUTO")
public class Produto implements Serializable{

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue
    private Integer id;
    private String descricao;
    @Column(name="data_cadastro")
    @Temporal(TemporalType.DATE)
    private Date dataCadastro;

    @ManyToMany(fetch=FetchType.LAZY)
    @JoinTable(name="TB_Carrinho", joinColumns={@JoinColumn(name="id_produto")}, inverseJoinColumns={@JoinColumn(name="id_venda")})
    private List<Venda> venda;

    private Double valor;
    @Column(name="quantidade_vendida")
    private Integer quantidadeVendida = 0;

Sera que alguem consegue identificar o que esta errado ? Grato pela atencao

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags jpa jsf java-ee ou faça a sua própria pergunta.