gpt4 book ai didi

java - Hibernate多对多双向存储

转载 作者:行者123 更新时间:2023-11-30 00:53:36 25 4
gpt4 key购买 nike

我遵循 mkyong 中的 Mkyong(多对多示例 – 连接表 + 额外列)

当我运行应用程序时,我能够存储多对多值

库存多对多双向存储:

session.beginTransaction();

Category category1 = new Category("CONSUMER", "CONSUMER COMPANY");
//new category, need save to get the id first
session.save(category1);

Stock stock = new Stock();
stock.setStockCode("7052");
stock.setStockName("PADINI");

StockCategory stockCategory = new StockCategory();

stockCategory.setStock(stock);
stockCategory.setCategory(category1);
stockCategory.setCreatedDate(new Date());
stockCategory.setCreatedBy("system");

stock.getStockCategories().add(stockCategory);

session.save(stock);

session.getTransaction().commit();

It stores Category and uses its id with Stock. It is inserting into three tables . Worrking fine.. It generates sql as follows

Hibernate: 
insert
into
hibernateLearning.category
(`DESC`, NAME)
values
(?, ?)

Hibernate:
insert
into
hibernateLearning.stock
(STOCK_CODE, STOCK_NAME)
values
(?, ?)

Hibernate:
insert
into
hibernateLearning.stock_category
(CREATED_BY, CREATED_DATE, CATEGORY_ID, STOCK_ID)
values
(?, ?, ?, ?)

来自类别的许多双向存储:

我修改了代码并尝试存储类别中的股票值,如下所示:

session.beginTransaction();
// Saved the Stock first
Stock stock = new Stock();
stock.setStockCode("7052");
stock.setStockName("PADINI");
session.save(stock);

// Saving the Category with Stock
Category category1 = new Category("CONSUMER1", "CONSUMER COMPANY");
StockCategory stockCategory = new StockCategory();
stockCategory.setStock(stock);
stockCategory.setCategory(category1);
stockCategory.setCreatedDate(new Date());
stockCategory.setCreatedBy("system");

category1.getStockCategories().add(stockCategory);
session.save(category1);

session.getTransaction().commit();

此代码生成以下查询:

Hibernate: 
insert
into
hibernateLearning.stock
(STOCK_CODE, STOCK_NAME)
values
(?, ?)


Hibernate:
insert
into
hibernateLearning.category
(`DESC`, NAME)
values
(?, ?)

我首先保存库存并将其与类别一起使用。此代码创建两个表并插入值。但缺少连接表(StockCategory)。我想知道这段代码哪里错了?

最佳答案

错误在于您只修改了双向关联的一侧,并且在第二个示例中,修改的一侧是相反一侧(即具有 mappedBy 属性的一侧)。 Hibernate 忽略反面。对于 Hibernate 来说重要的是所有者方面。因此,关联未保存是正常的,也是预料之中的。

关于java - Hibernate多对多双向存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20769343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com