如何使用会话属性在 Hybris 中限制单个 table 的灵活搜索查询?
How to restrict with flexible search query in Hybris for single table using session attribute?
我正在尝试使用有限制的灵活搜索。
我有一个会话属性 (?session.userGroups) 并想使用此组列表进行过滤。
我已经在 SAP 文档中看到如果您尝试过滤的给定 table 包含您要过滤的对象时如何执行此操作。例如
{country} IN (?session.countries}。其中 {country} 存在于 table。
但是我如何直接对国家 table 进行过滤之类的操作。
或者在我的例子中,我想直接过滤用户组 table。
我能用什么属性。以为可能是 {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 中应用搜索条件 -
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);
我正在尝试使用有限制的灵活搜索。 我有一个会话属性 (?session.userGroups) 并想使用此组列表进行过滤。
我已经在 SAP 文档中看到如果您尝试过滤的给定 table 包含您要过滤的对象时如何执行此操作。例如 {country} IN (?session.countries}。其中 {country} 存在于 table。
但是我如何直接对国家 table 进行过滤之类的操作。
或者在我的例子中,我想直接过滤用户组 table。
我能用什么属性。以为可能是 {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 中应用搜索条件 -
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);