使用hibernate java在数据库中保存数据的列表

使用hibernate java在数据库中保存数据的列表,java,spring,hibernate,Java,Spring,Hibernate,我有3个实体名为Stock、StockHistory和StockOpenClose。每个实体中都有一个公共列stock_id。我的问题是,我必须将数据列表保存到每个数据库中 for (Stock stok : stockList) { session.saveOrUpdate(stok); session.flush(); for (StockOpenAndClose

我有3个实体名为Stock、StockHistory和StockOpenClose。每个实体中都有一个公共列stock_id。我的问题是,我必须将数据列表保存到每个数据库中

   for (Stock stok : stockList) {
                    session.saveOrUpdate(stok);
                    session.flush();

                    for (StockOpenAndClose openStk : stockOpenCloseList) {
                        if (stockOpenCloseList != null) {
                            openStk.setStock_id(stok.getStock_id());
                            session.save(openStk);
                            session.flush();
                        }
                    }
                    for (StockHistory stkHis : stkHisList) {
                        stkHis.setStock_id(stok.getStock_id());
                        session.saveOrUpdate(stkHis);
                        session.flush();
                    }
}

我这样保存数据,我知道这是错误的。因为根据for each循环迭代,stock_id将是相同的。我想在股票历史股票开市实体中获得相应的股票id。我该怎么做?有人能纠正我吗?

你是说这样吗

for (int i = 0; i < stockList.size(); i++) {
  Stock stok = stockList.get(i);
  StockOpenAndClose openStk = stockOpenCloseList.get(i);
  StockHistory stkHis = stkHisList.get(i);
  session.saveOrUpdate(stok);
  session.flush();

  openStk.setStock_id(stok.getStock_id());
  session.save(openStk);

  stkHis.setStock_id(stok.getStock_id());
  session.saveOrUpdate(stkHis);
  session.flush();
}
for(int i=0;i

但是,如果您了解“hibernate cascade”(hibernate cascade),它将变得更好、更简单。

首先,您需要配置您的实体模型,以便您可以使用@PrimaryJoinColumn为您的股票、股票历史、,库存开闭表所以你需要储存你的库存object@LowCool我已经完成了JoinColumn和一个多人关系。是的。这是有效的,目前我可以用它解决我的问题。当然,我会尝试“hibernate cascade”。非常感谢。