2017-02-17 82 views
0

我有3個實體,名爲Stock,StockHistory和StockOpenClose。並且在每個實體中都有常見的列stock_id。我的問題是,我必須將數據列表保存到每個列表中。使用休眠數據庫保存數據列表java

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(); 
        } 
} 

我是這樣保存和數據保存。而且我知道這是錯誤的。由於stock_id將根據每個循環迭代相同。我想在StockHistory,StockOpenClose實體中獲得對應的stock_id。我該怎麼做?任何人都可以糾正我?

+0

首先所有的u需要配置在烏爾實體模型,你可以使用@PrimaryJoinColumn爲你的股票,stockHistory,stockOpenCloseTable的所以比你需要存儲你的庫存對象 – LowCool

+0

@LowCool我已經完成JoinColumn和ManyToOne關係了。 – Jiji

回答

0

你是這個意思嗎?

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(); 
} 

,但它會更好,更簡單,如果你瞭解「休眠級聯」 here some example

+0

yea..this正在工作,目前我可以解決我的問題。當然我會嘗試「休眠級聯」。謝謝 – Jiji