【发布时间】:2013-12-25 05:26:49
【问题描述】:
我按照 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();
它存储类别并将其 ID 与 Stock 一起使用。它正在插入 三张桌子。工作正常..它生成sql如下
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
(?, ?, ?, ?)
Many Many Bi-Directional storage from Category :
我修改了代码并尝试存储 Category 中的股票值,如下所示:
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)。 我想知道这段代码哪里错了?
【问题讨论】: