[問題] JPA做一對多UPDATE

看板java作者時間15年前 (2011/01/30 18:12), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串1/1
我使用的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
直接用delete method..簡單的講就是@Id 的field 不為
01/30 21:18, 1F

01/30 21:20, , 2F
null就做update,反之就是做insert
01/30 21:20, 2F

01/31 23:55, , 3F
建議你把mapping和上游操作部分的程式碼貼上來,比較清楚
01/31 23:55, 3F
文章代碼(AID): #1DHJcF33 (java)