0

我有两个实体。1) 文档和 2) Document_Users。一个文档可以有读者和作者。表格设计如下:

文档

  • ID
  • 姓名

文档_用户

  • ID
  • 姓名
  • 角色
  • 文档 ID

“角色”属性的值可以是 READER 和 WRITER。

我想设计 Document 类如下。

@Entity
@Table
public class document
{
@Id
private int id;
@Column
private String name;

private List<DocumentUser> readers;

private List<DocumentUser> writers;
}

请指导我如何在上面的类中映射“读者”和“作者”,以便在选择文档时可以获得它们的列表。

谢谢。

4

1 回答 1

0

我会让事情变得简单,只需要一个 DocumentUser 的映射集合。获取作者只会返回一个过滤的集合。获得非作家的读者也是如此:

public List<DocumentUser> getWriters() {
    List<DocumentUser> result = new ArrayList<DocumentUser>();
    for (DocumentUser du : documentUsers) {
        if (du.getRole() == DocumentUserRole.WRITER) {
            result.add(du);
        }
    }
    return du;
}

这样做的好处是非常接近数据库设计的实际情况。它不需要任何特定于实现的技巧。并且它允许通过执行将读者转换为作者documentUser.setRole(DocumentUserRole.WRITER),而无需将用户从列表中删除并将其添加到另一个列表中。

如果从一开始就知道 DocumentUser 的类型并且永远不会改变,那么基于继承的解决方案将是合适的。

于 2012-06-11T07:10:35.837 回答