jakarta-ee - 如何在 Hybris 中使用会话属性限制单个表的灵活搜索查询?
问题描述
我正在尝试使用有限制的灵活搜索。我有一个会话属性 (?session.userGroups) 并希望使用此组列表进行过滤。
如果您尝试过滤的给定表包含您要过滤的对象,我已经在 SAP 文档中看到了如何执行此操作。例如 {country} IN (?session.countries}。其中 {country} 存在于表中。
但是我将如何直接在国家/地区表上进行过滤。
或者在我的情况下,我想直接过滤 UserGroup 表。
我可以使用什么属性。认为可能是 {pk} 但会话属性包含对象本身而不仅仅是 PK。
{pk} IN (?session.usergroups} --不确定这是否正确
{这里发生了什么} IN (?session.usergroups}
解决方案
假设您正在会话中保存用户组对象列表
例如 :
Set<UserGroupModel> usergroups = userService.getAllUserGroupsForUser(user);
sessionService.setAttribute("userGroups", usergroups);
现在有两种方法:
使用 SearchRestriction/Personalization -(搜索限制将影响客户组网站的任何地方)
INSERT_UPDATE SearchRestriction;code[unique=true];name[lang=en];query;principal(UID);restrictedType(code);active;generate
;usergroup_restriction;Restrict UserGroups visibility;{item:PK} IN (?session.userGroups);customergroup;UserGroup;true;true;
直接在 FlexibleSearchQuery 中应用搜索条件 -
灵活搜索查询 ->
String queryString = "Select {PK} from {UserGroup} where {PK} in (?usergroups)"
final FlexibleSearchQuery query = new FlexibleSearchQuery(queryString);
query.addQueryParameter("usergroups", sessionService.getAttribute("userGroups"));
return flexibleSearchService.search(query);
推荐阅读
- react-native - API 响应中的错误说必需的参数 React native
- regex - 如何在正则表达式查询中拥有节点属性?
- vue.js - Vuejs - 动态添加组件
- ios - 如何修复 Podfile 中“pod 'Facebook-iOS-SDK'”命令的错误?
- influxdb - Telegraf basicstats diff 参数不起作用
- angular - 在 Angular Exception 和错误方法订阅中没有相同的信息异常
- java - Firebase Analytics 事件不支持数组参数错误
- nuxt.js - 在 nuxtjs 中使用 nestjs
- typescript - 用于识别总是评估的 if 分支的编译器规则
- r - 如何在 base::plot 中修复图例的边距?