0

我有一个 JPAContainer 填充了组实体(其中包含组名、组中用户数等属性)。我希望用户能够查看包含他们所属的所有组列表的表。

我通过这样做来完成这项工作groups.addContainerFilter(new Like("users.email", user.getEmail()));(刚刚意识到使用他们的 ID 会更有意义,但这不是重点),但现在我遇到了一个问题,如果有两个用户同时查看表格,列出的组将更改为新用户的组。

例如:

  • 玩家 A 正在查看他的组
  • 玩家 B 去查看他的组
  • 玩家 A 的视图刷新
  • 玩家 A 现在正在查看玩家 B 的组

我觉得我错过了一个明显的解决方案。我想只用一个单独的容器来支持表,然后将组过滤器产生的所有实体添加到表的新容器中,但这似乎效率低下。

是否不可能以某种方式为不同的用户以不同的方式过滤相同的 JPAContainer?

4

1 回答 1

0

好吧,我决定采用我的第一个解决方案,只需将组添加到支持表格的单独容器中。如果有人有更好的解决方案,我很想听听。

这基本上就是我让它工作的方式:

BeanItemContainer<Group> tableBack = new BeanItemContainer<Group>(Group.class);
groupTable.setContainerDataSource(tableBack);
Filter loggedInFilter = GroupManager.getGroupsByUserFilter(UserManager.getLoggedInUser());
tableBack.addAll(GroupManager.applyFiltersGetResults(loggedInFilter));

WhereapplyFiltersGetResults()将一组过滤器应用于 JPAContainer 并返回与它们匹配的所有组的列表。

编辑:这是一个糟糕的解决方案。最初我有一个用于所有 UI 实例的静态 JPAcontainer,但现在每个 UI 都初始化了一个新容器,它允许在不影响其他容器的情况下进行过滤。我认为这不会让人们看到其他用户,但它工作正常。

于 2015-03-15T12:57:39.957 回答