如何重新声明核心模型属性类型而不在 Hybris 中扩展它
Posted
技术标签:
【中文标题】如何重新声明核心模型属性类型而不在 Hybris 中扩展它【英文标题】:how to redeclare core model attribute type without extending it in Hybris 【发布时间】:2014-10-17 09:41:47 【问题描述】:默认情况下,Hybtis 将 CreditCardType 作为强制属性。我想通过使用redeclare=true
使其成为可选(不使用新模型扩展它)。我想知道为什么它不更新CreditCardPaymentInfo
模型。我就是这样的
<itemtype code="CreditCardPaymentInfo" autocreate="false" generate="false" >
<attributes>
<attribute qualifier="type" type="CreditCardType" redeclare="true" autocreate="false" generate="true">
<modifiers read="true" write="true" search="true" optional="true" />
<persistence type="property"/>
</attribute>
</attributes>
</itemtype>
我的 ant 构建工作正常。但是每当我更新正在运行的系统时,Hybris 并没有使这个属性成为非强制性的。
如果我用我的自定义模型扩展它并重新声明它然后它可以工作,但这就是我不需要的。我只想让它成为可选而不扩展它。
我认为 Impex 也有可能,但我不知道怎么做。请帮忙。
【问题讨论】:
【参考方案1】:您不能在不扩展类型的情况下重新声明属性。 重新声明的文档清楚地说明了这一点:
允许您从继承的类型重新定义属性定义。在 本质上,您可以使用不同类型的属性以及 与超类型不同的修饰符组合。
Impex 助您一臂之力。之后您可以使用 impex 更改属性修饰符。 放置以下 impex 脚本
update AttributeDescriptor;enclosingType(code)[unique=true];qualifier[unique=true];optional
;CreditCardPaymentInfo;type;true
在<your-extension>/resources/impex/essentialdata-<chosse-a-name>.impex
下。
在每次类型系统更新(或初始化)时,都会执行此 impex 并将 CreditCardPaymentInfo.type
标记为可选。出于测试目的,您也可以在hac
中运行此脚本。
【讨论】:
这正是我想要的。谢谢你:) 我很高兴听到这个消息。 这对加密属性不起作用(修饰符 encrypted = true)。加密现有属性需要任何其他步骤吗?以上是关于如何重新声明核心模型属性类型而不在 Hybris 中扩展它的主要内容,如果未能解决你的问题,请参考以下文章
SAP Hybris Commerce - 初始化参考属性的默认值