我定義2個實體單向一對多關係:JPA一對多插入重複鍵插入
在Command.class :
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name="STOCK_ID", referencedColumnName="id")
public StockDetails getStockDetails() {
return stockDetails;
}
在StockDetails.class :
@Id
public String getId() {
return id;
}
意味着Command擁有一個StockDetails和StockDetails可以在許多命令中,但不是h執行命令。
我有2個問題:
- 當我試圖插入與我得到異常現有StockDetails新的命令「不能在對象中插入重複鍵......」 後來我改變了CascadeType的合併然後我沒有得到這個例外。 但是,當級聯類型是MERGE,當我在DB有新StockDetails這不是exsits的是,我得到
對象異常引用了一個未保存的瞬態的實例 - 沖洗
之前保存的瞬態的實例
當級聯型合併,我改變了一些細節在StockDetils,並與改變StockDetails插入新的命令,這不是更新的東西我嘗試現有記錄 例如:
StockDetails sd1 = new StockDetails("GOOL", "Google Inc"); Command c1 = new Command(123456l, 12345614l, sd1, GlobalVeriables.COMMAND_TYPE_ASK, 200, 300d, 1200d, new Date(System.currentTimeMillis()), GlobalVeriables.COMMAND_STATUS_OPEN); commandManager.addNewCommand(c1); StockDetails sd2 = new StockDetails("GOOL", "Google Inc LTD"); Command c2 = new Command(5674l, 5678l, sd2, GlobalVeriables.COMMAND_TYPE_ASK, 200, 300d, 1200d, new Date(System.currentTimeMillis()), GlobalVeriables.COMMAND_STATUS_OPEN); commandManager.addNewCommand(c2);
請幫我SOLV說:)