使用复合键的许多人:如何在实体之间的表中添加元素?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用复合键的许多人:如何在实体之间的表中添加元素?相关的知识,希望对你有一定的参考价值。
所以我一直在关注本教程https://www.baeldung.com/jpa-many-to-many
我希望不同的VendingMachines为不同种类的品牌拥有不同种类的库存。到目前为止,遵循本教程并打开H2控制台似乎表结构是正确的。但是,我无法管理如何向结合了两个实体的表中添加内容。我的意思是,增加了自动售货机,增加了品牌,但无法增加库存。
我有
@Entity
public class VendingMachine {
@Id @GeneratedValue Long vendingMachineid;
String model;
int maxBrandsAvailable;
int maxStockperBrand;
@OneToMany(mappedBy="vendingMachine")
@JsonIgnore
private Set<BrandStock> brandstock;
@Entity
public class Brand {
@Id @GeneratedValue long brandId;
String name;
double price;
@OneToMany(mappedBy = "brand")
@JsonIgnore
Set<BrandStock> brandStock;
我也有两个实体的Jpa存储库。
与不同品牌相关的每台自动售货机的存货
@Entity
public
class BrandStock {
@EmbeddedId
BrandStockKey id;
@ManyToOne
@MapsId("brand_id")
@JoinColumn(name = "brand_id")
Brand brand;
@ManyToOne
@MapsId("vendingMachine_id")
@JoinColumn(name = "vendingMachine_id")
VendingMachine vendingMachine;
private int stock;
当然还有该表的主键生成器
@Embeddable
class BrandStockKey implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name = "brand_id")
Long brandId;
@Column(name = "vendingMachine_id")
Long vendingMachineId;
在CommandLineRunner上,我用来添加元素的方法看起来像这样,`]
BrandStock cocaColaForModel01 = new BrandStock();
Set<BrandStock> stockForModel01 = new HashSet<BrandStock>();
VendingMachine model01=new VendingMachine("Model01", 5, 10,null);
stockForModel01.add(cocaColaForModel01);
cocaColaForModel01.setStock(10);
cocaColaForModel01.setVendingMachine(model01);
Brand cocaCola = new Brand("CocaCola", 1.75, stockForModel01);
model01.setBrandstock(stockForModel01);
cocaCola.setBrandStock(stockForModel01);
brandRepository.save(cocaCola);
vendingMachineRepository.save(model01);
因此,我一直在关注本教程https://www.baeldung.com/jpa-many-to-many,我希望不同的VendingMachines对于不同种类的品牌拥有不同种类的库存。到目前为止......>
答案
好的,我做到了。我缺少其他BrandStock的存储库,并且在创建所有内容时都非常谨慎。
以上是关于使用复合键的许多人:如何在实体之间的表中添加元素?的主要内容,如果未能解决你的问题,请参考以下文章