我有两个实体。 1)文档和2)Document_Users。文档可以包含读者和作者。表格设计如下:
文档
Document_Users
“role”属性可以具有READER和WRITER值。
我想设计Document类,如下所示。
@Entity
@Table
public class document
{
@Id
private int id;
@Column
private String name;
private List<DocumentUser> readers;
private List<DocumentUser> writers;
}
请指导我如何在上面的课程中映射“读者”和“作家”,以便我可以在选择文档时获取它们的列表。
感谢。
答案 0 :(得分: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的类型,并且永远不会改变,那么基于继承的解决方案是合适的。