我有一个JPAContainer,里面装有组实体(包含组名,组内用户数等属性)。我希望用户能够查看包含他们所属的所有组的列表的表。
我通过groups.addContainerFilter(new Like("users.email", user.getEmail()));
来实现这一点(刚刚意识到使用他们的ID会更有意义,但这不是重点),但现在我遇到的问题是,如果有两个用户查看同时,列出的组将更改为新用户的组。
例如:
我觉得我错过了一个明显的解决方案。我想到只有一个单独的容器支持表,然后将组中过滤器产生的所有实体添加到表的新容器中,但这似乎效率低下。
不可能以某种方式对不同用户进行不同的JPAContainer过滤吗?
答案 0 :(得分:0)
好吧,我决定采用我的第一个想法来解决问题,然后将这些组添加到支持该表的单独容器中。如果有人有更好的解决方案,我很乐意听到它。
这基本上就是我的工作方式:
BeanItemContainer<Group> tableBack = new BeanItemContainer<Group>(Group.class);
groupTable.setContainerDataSource(tableBack);
Filter loggedInFilter = GroupManager.getGroupsByUserFilter(UserManager.getLoggedInUser());
tableBack.addAll(GroupManager.applyFiltersGetResults(loggedInFilter));
applyFiltersGetResults()
将过滤器数组应用于JPAContainer并返回与其匹配的所有组的列表。
编辑:这是一个糟糕的解决方案。最初我有一个静态JPAcontainer用于所有UI实例,但现在每个UI初始化一个新容器,允许过滤而不影响其他人的容器。我认为这不会让人们看到其他用户,但它工作正常。