definir o mapeamento jpa correto para itens e produtos do carrinho de compras

Jonlannister:

Estou aprendendo jpa por meio de alguns exemplos, envolvendo um carrinho de compras e itens do carrinho. Eu os defini conforme abaixo ... mas não tenho muita certeza sobre qual mapeamento usar

@Entity
class Product{

   private Long id;
   private String name;
   ...
}

@Entity
class CartItem{
   private Long id;

   private Product product;

   private int quantity;

...
}

@Entity
class ShoppingCart{
   private Long id;

   @OneToMany
   private Set<CartItem> cartItems;

  ...
}

O que não tenho certeza é como me relacionar Product and CartIteme como definir o mappedByatributo. Alguém pode me dizer como fazer isso? Quais são os critérios para fazer isso? Eu estava tentando definir algo como 1 cartitem contains 1 product only. Parece uma OneToOnerelação .Se for assim, quem mantém a relação (não é o que mappedByfaz?). Tenho dúvidas semelhantes sobre ShoppingCarte CartItemtambém

desde já, obrigado

JB Nizet:

Um item do carrinho faz referência a um produto. Mas um único produto é referenciado por vários itens do carrinho. Portanto, é uma associação um-para-muitos.

Um carrinho de compras como vários itens, e um item faz parte de um carrinho de compras, portanto, também é uma associação um para muitos.

Quando você tem uma associação OneToMany bidirecional, o lado do proprietário da associação é sempre o lado muitos . O lado do proprietário de uma associação é o lado onde não há mappedByatributo. Na verdade, mappedBysignifica " Eu sou apenas o outro lado de uma associação, que já está mapeada pelo seguinte atributo ". Observe que a forma como a associação é mapeada (coluna de junção, tabela de junção) deve ser definida apenas no lado do proprietário, onde o mappedByatributo está ausente.

Quando você tem uma associação unidirecional, há apenas um lugar onde o mapeamento pode ser definido e, portanto, o atributo mappedBy nunca é usado.

Portanto, suas entidades devem ser mapeadas assim:

@Entity
class Product{

   private Long id;
   private String name;
   ...
}

@Entity
class CartItem{
   private Long id;

   @ManyToOne
   private Product product;

   private int quantity;

...
}

@Entity
class ShoppingCart{
   private Long id;

   @OneToMany
   private Set<CartItem> cartItems;

  ...
}

Se você quiser que o item do carrinho saiba sobre o carrinho de compras de sua propriedade, sua associação se torna bidirecional e as entidades se tornam:

@Entity
class CartItem{
   private Long id;

   @ManyToOne
   private Product product;

   @ManyToOne
   private ShppingCart shoppingCart;

   private int quantity;

...
}

@Entity
class ShoppingCart{
   private Long id;

   @OneToMany(mappedBy = "shoppingCart")
   private Set<CartItem> cartItems;

  ...
}

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Como obter vários itens para o carrinho de compras

Buscando e-mails de empresas cujos produtos estão no carrinho de compras

Remover produtos do carrinho de compras - Site Odoo 9

A solicitação simples de PHP para recuperar e exibir 'produtos' do carrinho não está funcionando?

Adicionando itens no carrinho de compras

Como armazenar e recuperar itens do carrinho de compras no armazenamento local?

como faço para obter itens comprados em um gridview em um carrinho de compras?

Problema para criar itens com carrinho de compras

Obter itens do carrinho de compras usando Python pós-solicitação

Obter itens do carrinho de compras usando Python pós-solicitação

Obter itens do carrinho de compras usando Python pós-solicitação

Manipulação de itens do carrinho do WooCommerce condicionalmente com base nas categorias de produtos

Defina uma quantidade mínima para itens do carrinho de categorias específicas de produtos WooCommerce

Altere os preços dos itens do carrinho para categorias específicas de produtos no Woocommerce

Altere a cor do botão Adicionar ao carrinho e desative-o para produtos fora de estoque no Woocommerce

não pode ler a propriedade 'comprimento' de indefinido para o componente do carrinho de compras

Eu tenho um carrinho de compras PhP e preciso capturar todos os produtos escolhidos e enviá-los para o meu e-mail junto com um formulário de contato clicando em "Enviar"

Como uso cookies para armazenar o conteúdo do carrinho de compras?

Como uso cookies para armazenar o conteúdo do carrinho de compras?

como rastrear o ID da sessão para a tabela do carrinho de compras em laravel

Excluir lista do carrinho de compras para atualizar também o preço total

Subtotal da soma do carrinho de compras da jQuery para calcular o preço total

Arraste e solte no carrinho de compras simplesmente chamando o evento onClick já programado do botão

Itens duplicados que aparecem no carrinho de compras

Itens duplicados que aparecem no carrinho de compras

Atualizar a quantidade no carrinho de compras para um produto redefine a quantidade atualizada anteriormente de outros produtos

A melhor maneira de utilizar o armazenamento local para armazenar detalhes do carrinho de compras

Passando dados de matriz do formulário para o carrinho de compras

Problema de atualização da quantidade do carrinho de compras vue e vuex?