Dúvida JPA

Pessoal, estou com uma dúvida sobre mapeamentos de entidades e gostaria da ajuda de vocês.
A situação é a seguinte, estou mapeando uma classe ‘carrinho’ que possui uma chave composta de cliente e produto (Embeddable).
FIz a seguinte forma. criei uma classe @Embeddable a parte chamada CarrinhoPK onde recebe dois atributos sendo eles String email e long produto_id;

Sobre os atributos de negrito estou com uma dúvida se eles deveriam ser do tipo Usuario usuario(para email), e Produto produto_id (Para produto), ou seja atributos da sua respectiva classe e não atributos do tipo das chaves das suas classes.

Qual das duas formas é correta?

Sim, Usuario usuario e Produto produto, ficaria assim. Não precisa de chave composta nesse caso. Pois carrinho será encontrado pelo dono do carrinho, acredito*, não?

class Carrinho {
    @OneToOne//Carrinho terá um só dono e usuário terá um só carrinho
    Usuario usuario;

    @OneToMany//Pois carrinho poderá ter mais de um produto e produto terá só um carrinho
    Produto produto;

    }

Sim será pelo dono. Mas por normalização o correto não seria fazer a chave composta?

O que vai ganhar com essa norma?

Evitar redundância de produtos pro carrinho pois a quantidade por produto e controlada a partir de um capo “Quantidade”, sendo assim creio eu que normalizar desta forma inibe estes casos.

Minha maior dúvida é como faço para ter uma chave composta sendo seus campos Classes (Produto e Usuario) não String email e Long produto_id.É possível? (Sou novo com JPA)

Nao precisa de chave composta pra evitar essa redundancia. Voce pode ter a referencia do produto e a quantidade na tabela de itens do carrinho do mesmo jeito. PK pode ser uma sequence, e o que for pra ser único cria uma unique key.

Perdão, não entendi muito bem.

Voce diz criar uma unique do valor que eu quero que não se repita?. Se sim, isso não iria bloquear um produto para a mesma coluna na tabela toda?.

O pedido vai ser diferente, então vai ter mais um campo na unique.

Exemplo:

IdItem (PK)
IdPedido (FK)
IdProduto (FK)
Quantidade

Unique key (IdPedido, IdProduto)