第一次提問,有可能描述不清楚,請大佬們不要生氣,經驗有限,您提出來我會馬上完善

場景:
我正在設計一個股票凈值計算工具:
我可以創建很多股票池,股票池里邊添加一些股票,典型的一對一關系,單向
那么每一只股票呢,我又要進行很多次交易,所以某個股票池里的股票對交易記錄,又是一對多關系,單向
所以我現在應該如何實作這種樹狀的關聯關系呢?
我進行了如下嘗試:
StockPool一對多關聯Stock,一方管理
Stock呢,又一對多關聯TransactionHistory,還是一方管理,也就是Stock,但是呢這個stock又是StockPool管理的一方
代碼臭長,所以只列出相關的內容,不管如何級聯,都是一方在管理
對于StockPool
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "id")//該欄位為外鍵,用于關聯文章表
public Set<Stock> getStocks() {
return stocks;
}
public void setStocks(Set<Stock> stocks) {
this.stocks = stocks;
}
和
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "id")//該欄位為外鍵,用于關聯凈值表
public Set<NetWorth> getNws() {
return nws;
}
public void setNws(Set<NetWorth> nws) {
this.nws = nws;
}
對于Stock
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "id")//該欄位為外鍵,用于關聯股票表
public Set<TransactionHistory> getThs() {
return ths;
}
public void setThs(Set<TransactionHistory> ths) {
this.ths = ths;
}
所以現在
我成功的創建了股票池之后


看起來并沒問題,向一個里邊添加一個股票,這個股票有兩條交易記錄,但是
java.sql.SQLIntegrityConstraintViolationException:
Cannot add or update a child row: a foreign key constraint fails
(`networth_ding`.`t_stockding`, CONSTRAINT `FK_pi66wsimny0t01abiw8wm5ql9`
FOREIGN KEY (`id`) REFERENCES `t_stockpool` (`id`))
悲劇出現了,外鍵約束失敗。
大概意思應該是t_stockding的外鍵參考的是t_stockpool的id,但是這個id在t_stockpool中不存在。問題是,這這都是級聯操作,應該由Hibernate來實作啊
而且,即使我嘗試先保存操作記錄,仍然也會報錯,搞不定了,請求大佬們的指點
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/16019.html
標籤:Web 開發
