我有一个包含多个页面的网站,每个页面都有一个包含一些数据的表格。这些表有很多列,用户可以选择要显示或隐藏的列。我试图坚持这些选择。
我的问题是选择保留这些物体的最佳方法。
我看到很多可能的方式,其中没有一方能够成功实施。但在我承诺其中之一之前,我想知道我是否做得非常错误,或者是否应该如何实施。
我有一个已经存在的用户类。
选项#1 在我的用户实体中,添加Map>的字段。其中键是页面名称,列表是用户在该页面上选择的列。使用@ElementCollection。
选项#2 用户实体具有@onetomany列表。这需要一个UserColumns实体,其中pagename作为主键,并且@oneToMany与每列的另一个实体的关系。
选项1:
@Entity
public class User{
private Map<String, List<String>> columns;
@ElementCollection
public void setColumns(Map<String, List<String>> colunms){
}
}
选项2:
@Entity
public class User{
private List<UserColumns> columns;
@ElementCollection or @OneToMany
public void setColumns(List<UserColumns> colunms){
}
}
我意识到如果不查看实际代码就很难回答,而且我可能没有充分或准确地描述这种情况,但仍欢迎所有输入。谢谢。
答案 0 :(得分:3)
我个人总是喜欢在做这样的事情时使用与其他实体的一对多关系。我的理由是,这是一个更加灵活的设计。很容易看到一个场景,而不仅仅知道列名称,您将需要其他信息。通过使用真实实体而不是字符串,您只需向类中添加新属性即可。如果您只使用一个字符串,那么您的手上将进行更广泛的重构。在开始时需要更长的时间,但它最终总会得到回报。