2011-03-09 32 views
2

我有關於如何保存M2M關係的問題。一方必須始終擁有自己的一面。在我們的場景中,我們有一個實體「角色」和一個實體「用戶」。角色可以讓許多用戶和用戶分配到不同的角色。 「角色」實體是擁有網站。JPA保存ManyToMany的非擁有者關係

在Gui中,管理員可以將用戶添加到角色中。當我用指定的用戶保存角色時,一切正常。現在我們應該提供一種爲用戶分配角色的方法。桂爲這是沒有問題,但我不知道如何保存更改的角色分配。保存用戶不會保存分配的角色,因爲它不是擁有者。

是否有另一種方式做到這一點?我不確定,但我認爲唯一的方法是將所選用戶添加到所有分配的角色並保存角色。

回答

0

要保存關聯,您需要保存關係的擁有方。爲了保持內存對象的一致性,您可能需要在一個服務方法中進行管理,該方法更新用戶和角色中的集合,(如果它在實現中有意義)爲您執行保存,那麼您可以調用該方法來創建關聯,無論您是將用戶添加到角色還是將角色添加到用戶。這至少會將模型實現從服務的調用者中抽象出來,並確保事情能夠正確保持。

+0

好的,謝謝你的回答。我試圖將角色分配保存在服務層中。以下是我的示例: – 2011-03-11 16:53:10

+0

用戶分配了一個角色。在桂我刪除這個角色分配。當管理員點擊保存時,我的服務方法被調用。在這種方法中,我嘗試刪除用戶的角色關係。 user.getRoles()是空的(按預期)。要刪除數據庫中的關係,我嘗試從數據庫中加載角色,刪除用戶並保存角色。繼承人我的問題。加載的角色不包含用戶,但它存儲在數據庫中。所以我不能刪除關係。 – 2011-03-11 17:11:50

+0

也許你的角色被緩存了。你可以從緩存中清除角色並重新加載它,以確保它反映數據庫中真正的內容,然後執行操作? – digitaljoel 2011-03-11 21:38:42

相關問題