Gente, estou com um problema, tenho está classe com @JoinColumn em product e buy:
E quando tento salvar qualquer coisa no banco de dados aparece este erro:
The @JoinColumns on the annotated element [field product] from the entity class [class Model.ItemBuy] is incomplete. When the source entity class uses a composite primary key, a @JoinColumn must be specified for each join column using the @JoinColumns. Both the name and the referencedColumnName elements must be specified in each such @JoinColumn.
O que devo fazer?
Acredito que você não poderia usar os mesmos atributos como @Id
e @ManyToOne
, deveria utilizar atributos separados para que o @IdClass
funcione corretamente.
Exemplo:
@Id
@Column(name = "produto_id")
private Integer productId;
@ManyToOne
@JoinColumn(name = "produto_id", insertable = false, updatable = false)
private Product product;
O mesmo formato se repetiria para Buy
!
Como não vi sua classe ItemBuyId
não sei como estruturou a mesma, mas lá deveria conter os dois atributos no formato Integer
como no exemplo acima e a classe também tem que estar implementando Serializable
.
Esse seria o formato de mapeamento de chave composta que já utilizei.
Minha classe ItemCompraID:
Meu banco de dados:
Na minha classe ItemCompra (ItemBuy), eu não coloquei um @ID, usei chave composta (1,1), ou seja, Produto e Compra.
O que esta de errado nesse mapeamento? Porque está dando este erro?