簡體   English   中英

玩2框架多對多關系更好的設計

[英]Play 2 framework many-to-many relation better design

在我的應用程序中,我有不同的UserItem ,因此每個用戶可以選擇許多項目。

在本教程中,我學習了@ManyToMany注釋。

@Entity
public class Item extends Model {

    ...

    @ManyToMany(cascade = CascadeType.REMOVE)
    public List<User> users = new ArrayList<User>();

但我能想到的第二個選項是為User-to-Item關系定義一個單獨的類,這樣我就可以添加日期和時間等附加信息。

@Entity
public class ItemUserRel extends Model {
    @Id
    public Long id;

    public User user;
    public Item item;

    //additional information
    public Date date;

    ...

哪兩種選擇都是更好的設計,為什么?

我剛才遇到過類似的問題。 我還必須處理模型User和模型Group 我的要求是:

用戶可以具有n個 readablen writable組。 這些權限必須存儲在第三個表中(不在用戶而不在組表中)。 還有其他屬性,如authorisedBy和'authorisedOn'。 所以@ManyToMany沒有工作,因為我沒有真正的控制權。 此外,附加屬性使得很難通過JPA進行映射。

也許其他設計是可能的,但我(仍然)認為引入一個新類UserGroup是最好的。 此類與單個User具有@ManyToOne關系。

我最終定義了這三個模型:

  1. 用戶
  2. 組 - 有關組模型的一般信息
  3. UserGroup - 包含其他字段,如: permissionsauthorisedByauthorisedOn等。

在我的用戶模型,我會消氣getUserGroups()getPersonalGroup()這基本上是一個(個人)的實例GroupgetUserGroups()但其中createdByauthorisedBy是相同的用戶。

我發現這個設計更易於維護,更清晰。 此設計也幫助我創建了一個舒適的用戶界面,管理員可以在其中管理和更改UserGroup的權限。

也許更有用的信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM