我使用的classes都是JPA透過OR-mapping自動產生的
以良葛格的"一對多+雙向關聯"文章舉例說明 可能會比較容易描述我的問題
http://caterpillar.onlyfun.net/Gossip/EJB3Gossip/BidirectionalAssociation.html
(不過我的scenario與此篇文章有一點點不同
我的"一對多"是"上游對下游"的關係
即資料存入DB時 一定先有room 才有多個user)
我的關聯性設定跟良葛格的一樣
無論是 @OneToMany 或 @ManyToOne 都有加上 CascadeType.ALL 的屬性
不過因為資料順序性的限制
有在下游(user)的FK加上 insertable=false, updatable=false
另外我的scenario是只會對上游的table做操作
目前從上游執行 insert & delete 都沒問題
唯獨update有點怪(update是利用JPA的merge)
假設現在DB中已有的資料是 1 room 對應到 3 users
要update的object是 1 room 對應到 4 users
則DB中的user會自動加一筆新資料
但如果要update的object是 1 room 對應到 2 users
則DB中的user沒變化
所以很怪的點是 下游的table 會自動增加 卻不會自動刪除
不知道是不是我什麼地方少做設定 @@
我查了一下 在JPA2.0中 CascadeType.DELETE_ORPHAN 似乎可以達到我的需求
可惜我用的環境只相容JPA1.0
不知道版友還有沒有其它的解決方式呢?
先說聲感謝唷<(_ _)>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.85.20
→
01/30 21:18, , 1F
01/30 21:18, 1F
→
01/30 21:20, , 2F
01/30 21:20, 2F
→
01/31 23:55, , 3F
01/31 23:55, 3F