1

在我的 hybris 事件监听器中,我有一个项目的 PK,而不是模型项目。如何判断这个PK所属的物品类型?

在 hybris wiki 中,他们给出了这个例子,这样你就知道一个项目是 Product 类型的:

//The product deployment code is "1"
if (1 == pk.getTypeCode())
{
    final ProductModel product = modelService.get(pk);
    //Put your business code here
}

但我不喜欢硬编码我要处理的类型的 TypeCode 的想法。

4

3 回答 3

2

为了不在源代码中硬连线 TypeCode,您必须首先在数据库中找到您的项目,然后您可以通过 2 种不同的方式找出它的类型:

final ItemModel item = modelService.get(pk);

if (ProductModel._TYPECODE.equals(item.getItemtype()))
{
    LOG.debug("ProductModel being edited");
}

//or

if (item instanceof ProductModel) {
    LOG.debug("ProductModel being edited");
}

尽管这可能会减慢 AfterSaveEvent 侦听器中的速度,因为将为在您的 hybris 服务器中编辑、创建或删除的每个对象调用此侦听器。

于 2013-09-18T09:22:03.147 回答
1

下面是在 hybris 4.x 中执行此操作的示例 groovy 脚本。

import de.hybris.platform.core.PK;
import de.hybris.platform.jalo.type.TypeManager; // this class is deprecated though

def pkString = 8796093054980; // PK of admin
def typeService = ctx.getBean("typeService");
def modelService= ctx.getBean("modelService");

def composedType = TypeManager.getInstance().getRootComposedType(PK.fromLong(pkString).getTypeCode());
def composedTypeModel = modelService.toModelLayer(composedType);
out.println typeService.getModelClass(composedTypeModel);

结果:类 de.hybris.platform.core.model.user.UserModel

于 2014-04-15T06:24:26.960 回答
0

HAC 可用于查找 Hybris 系统中已定义类型的类型代码:

转到::/hac/维护/部署

这将为您提供以下信息:

  1. 类型代码
  2. 桌子
  3. 类型
  4. 扩大
于 2013-10-29T07:52:16.590 回答