SAP Hybris 无法创建自定义横幅组件
SAP Hybris can't create custom banner component
我想创建自定义横幅组件,扩展自 SimpleBannerComponent
。但是我创建后,在Backoffice中创建失败,如下所示。
1) 我将此项目添加到我的 *-items.xml
文件中。
<itemtype code="PromotionBannerCMSComponent" autocreate="true" generate="true" extends="SimpleBannerComponent"
jaloclass="my.package.core.jalo.components.PromotionBannerCMSComponent">
<description>Promotion banner component</description>
<deployment table="PromotionBanners" typecode="15301"/>
<attributes>
<attribute qualifier="code" type="java.lang.String">
<persistence type="property"/>
<modifiers/>
<description>Banner name (not unique)</description>
</attribute>
<attribute qualifier="title" type="localized:java.lang.String">
<description>Title</description>
<modifiers read="true" write="true" search="true" initial="true"/>
<persistence type="property"/>
</attribute>
<attribute qualifier="position" type="SimpleBannerPositionEnum">
<description>Banner position</description>
<modifiers optional="true" initial="true"/>
<persistence type="property"/>
</attribute>
<attribute qualifier="altText" type="localized:java.lang.String">
<description>Banner alt text</description>
<modifiers optional="true" initial="true"/>
<persistence type="property"/>
</attribute>
<attribute qualifier="titleSecondary" type="localized:java.lang.String">
<description>Title secondary</description>
<persistence type="property" />
<modifiers />
</attribute>
<attribute qualifier="urlLoc" type="localized:java.lang.String">
<description>Banner url</description>
<persistence type="property" />
<modifiers />
</attribute>
</attributes>
</itemtype>
2) 我做了 ant clean all
,重新启动了服务器,我已经 运行 HAC -> Update
检查了我的自定义扩展并检查了 Update running system
。然后我又重新启动了服务器。
3) 我想在 Backoffice WCMS->Components->Add
中创建组件,但它因错误而失败 - 我已经打开 flexible.search.exception.show.query.details
来查看它:
[ConfigurableFlowController] Object could not be saved
com.hybris.cockpitng.dataaccess.facades.object.exceptions.ObjectSavingException: Object could not be saved
和
Caused by: de.hybris.platform.servicelayer.exceptions.ModelSavingException: [de.hybris.platform.servicelayer.interceptor.impl.UniqueAttributesInterceptor@716c1b71]: unexpected validator error: SQL search error - Unknown column 'item_t0.p_catalogversion' in 'where clause' query = 'SELECT item_t0.PK FROM cmscomponent item_t0 WHERE
.
.
现在我什至不能创建基本的 SimpleBannerComponent,也不能创建其他组件。更新有问题吗?
我正在使用 Hybris 1811.18。
我能看到的问题之一是应该删除部署 table,因为最佳做法是仅在扩展 GenericItem 时提供部署(当您不指定父级时,将自动设置此类型)。所以你的定义应该是这样的:
<itemtype code="PromotionBannerCMSComponent" autocreate="true" generate="true" extends="SimpleBannerComponent"
jaloclass="my.package.core.jalo.components.PromotionBannerCMSComponent">
<description>Promotion banner component</description>
<attributes>
<attribute qualifier="code" type="java.lang.String">
<persistence type="property"/>
<modifiers/>
<description>Banner name (not unique)</description>
</attribute>
<attribute qualifier="title" type="localized:java.lang.String">
<description>Title</description>
<modifiers read="true" write="true" search="true" initial="true"/>
<persistence type="property"/>
</attribute>
<attribute qualifier="position" type="SimpleBannerPositionEnum">
<description>Banner position</description>
<modifiers optional="true" initial="true"/>
<persistence type="property"/>
</attribute>
<attribute qualifier="altText" type="localized:java.lang.String">
<description>Banner alt text</description>
<modifiers optional="true" initial="true"/>
<persistence type="property"/>
</attribute>
<attribute qualifier="titleSecondary" type="localized:java.lang.String">
<description>Title secondary</description>
<persistence type="property" />
<modifiers />
</attribute>
<attribute qualifier="urlLoc" type="localized:java.lang.String">
<description>Banner url</description>
<persistence type="property" />
<modifiers />
</attribute>
</attributes>
尝试初始化系统以对此进行测试,以便从数据库中删除旧类型及其关联 table。
我用 1905.13 测试了你的代码,它工作正常。 (我需要调整包名称并添加 SimpleBannerPositionEnum 定义)我只是在命令行中做了 "ant all",在平台更新期间做了 "Update running system"(没有检查任何扩展)。我能够在后台创建 PromotionBannerCMSComponent 的实例。
您是否尝试过初始化并查看它是否适合您?否则,您可能需要分享更多关于错误/堆栈跟踪的信息。
原来我有一个旧的部署 table 与此组件冲突,不知何故它在 ant clean all
期间没有显示错误。
所以我 运行 在 HAC delete from ydeployments where typecode=XX;
中(XX 是在 HAC 中找到的类型代码)并从几乎相同的部署开始,除了我删除了 jaloclass 和部署 table 描述:
<itemtype code="PromotionBannerCMSComponent" autocreate="true" generate="true" extends="SimpleBannerComponent">
<description>Promotion banner component</description>
<attributes>
<attribute qualifier="code" type="java.lang.String">
<persistence type="property"/>
<modifiers/>
<description>Banner name (not unique)</description>
</attribute>
<attribute qualifier="title" type="localized:java.lang.String">
<description>Title</description>
<modifiers read="true" write="true" search="true" initial="true"/>
<persistence type="property"/>
</attribute>
<attribute qualifier="position" type="SimpleBannerPositionEnum">
<description>Banner position</description>
<modifiers optional="true" initial="true"/>
<persistence type="property"/>
</attribute>
<attribute qualifier="altText" type="localized:java.lang.String">
<description>Banner alt text</description>
<modifiers optional="true" initial="true"/>
<persistence type="property"/>
</attribute>
<attribute qualifier="titleSecondary" type="localized:java.lang.String">
<description>Title secondary</description>
<persistence type="property" />
<modifiers />
</attribute>
<attribute qualifier="urlLoc" type="localized:java.lang.String">
<description>Banner url</description>
<persistence type="property" />
<modifiers />
</attribute>
</attributes>
</itemtype>
我想创建自定义横幅组件,扩展自 SimpleBannerComponent
。但是我创建后,在Backoffice中创建失败,如下所示。
1) 我将此项目添加到我的 *-items.xml
文件中。
<itemtype code="PromotionBannerCMSComponent" autocreate="true" generate="true" extends="SimpleBannerComponent"
jaloclass="my.package.core.jalo.components.PromotionBannerCMSComponent">
<description>Promotion banner component</description>
<deployment table="PromotionBanners" typecode="15301"/>
<attributes>
<attribute qualifier="code" type="java.lang.String">
<persistence type="property"/>
<modifiers/>
<description>Banner name (not unique)</description>
</attribute>
<attribute qualifier="title" type="localized:java.lang.String">
<description>Title</description>
<modifiers read="true" write="true" search="true" initial="true"/>
<persistence type="property"/>
</attribute>
<attribute qualifier="position" type="SimpleBannerPositionEnum">
<description>Banner position</description>
<modifiers optional="true" initial="true"/>
<persistence type="property"/>
</attribute>
<attribute qualifier="altText" type="localized:java.lang.String">
<description>Banner alt text</description>
<modifiers optional="true" initial="true"/>
<persistence type="property"/>
</attribute>
<attribute qualifier="titleSecondary" type="localized:java.lang.String">
<description>Title secondary</description>
<persistence type="property" />
<modifiers />
</attribute>
<attribute qualifier="urlLoc" type="localized:java.lang.String">
<description>Banner url</description>
<persistence type="property" />
<modifiers />
</attribute>
</attributes>
</itemtype>
2) 我做了 ant clean all
,重新启动了服务器,我已经 运行 HAC -> Update
检查了我的自定义扩展并检查了 Update running system
。然后我又重新启动了服务器。
3) 我想在 Backoffice WCMS->Components->Add
中创建组件,但它因错误而失败 - 我已经打开 flexible.search.exception.show.query.details
来查看它:
[ConfigurableFlowController] Object could not be saved
com.hybris.cockpitng.dataaccess.facades.object.exceptions.ObjectSavingException: Object could not be saved
和
Caused by: de.hybris.platform.servicelayer.exceptions.ModelSavingException: [de.hybris.platform.servicelayer.interceptor.impl.UniqueAttributesInterceptor@716c1b71]: unexpected validator error: SQL search error - Unknown column 'item_t0.p_catalogversion' in 'where clause' query = 'SELECT item_t0.PK FROM cmscomponent item_t0 WHERE
.
.
现在我什至不能创建基本的 SimpleBannerComponent,也不能创建其他组件。更新有问题吗? 我正在使用 Hybris 1811.18。
我能看到的问题之一是应该删除部署 table,因为最佳做法是仅在扩展 GenericItem 时提供部署(当您不指定父级时,将自动设置此类型)。所以你的定义应该是这样的:
<itemtype code="PromotionBannerCMSComponent" autocreate="true" generate="true" extends="SimpleBannerComponent"
jaloclass="my.package.core.jalo.components.PromotionBannerCMSComponent">
<description>Promotion banner component</description>
<attributes>
<attribute qualifier="code" type="java.lang.String">
<persistence type="property"/>
<modifiers/>
<description>Banner name (not unique)</description>
</attribute>
<attribute qualifier="title" type="localized:java.lang.String">
<description>Title</description>
<modifiers read="true" write="true" search="true" initial="true"/>
<persistence type="property"/>
</attribute>
<attribute qualifier="position" type="SimpleBannerPositionEnum">
<description>Banner position</description>
<modifiers optional="true" initial="true"/>
<persistence type="property"/>
</attribute>
<attribute qualifier="altText" type="localized:java.lang.String">
<description>Banner alt text</description>
<modifiers optional="true" initial="true"/>
<persistence type="property"/>
</attribute>
<attribute qualifier="titleSecondary" type="localized:java.lang.String">
<description>Title secondary</description>
<persistence type="property" />
<modifiers />
</attribute>
<attribute qualifier="urlLoc" type="localized:java.lang.String">
<description>Banner url</description>
<persistence type="property" />
<modifiers />
</attribute>
</attributes>
尝试初始化系统以对此进行测试,以便从数据库中删除旧类型及其关联 table。
我用 1905.13 测试了你的代码,它工作正常。 (我需要调整包名称并添加 SimpleBannerPositionEnum 定义)我只是在命令行中做了 "ant all",在平台更新期间做了 "Update running system"(没有检查任何扩展)。我能够在后台创建 PromotionBannerCMSComponent 的实例。
您是否尝试过初始化并查看它是否适合您?否则,您可能需要分享更多关于错误/堆栈跟踪的信息。
原来我有一个旧的部署 table 与此组件冲突,不知何故它在 ant clean all
期间没有显示错误。
所以我 运行 在 HAC delete from ydeployments where typecode=XX;
中(XX 是在 HAC 中找到的类型代码)并从几乎相同的部署开始,除了我删除了 jaloclass 和部署 table 描述:
<itemtype code="PromotionBannerCMSComponent" autocreate="true" generate="true" extends="SimpleBannerComponent">
<description>Promotion banner component</description>
<attributes>
<attribute qualifier="code" type="java.lang.String">
<persistence type="property"/>
<modifiers/>
<description>Banner name (not unique)</description>
</attribute>
<attribute qualifier="title" type="localized:java.lang.String">
<description>Title</description>
<modifiers read="true" write="true" search="true" initial="true"/>
<persistence type="property"/>
</attribute>
<attribute qualifier="position" type="SimpleBannerPositionEnum">
<description>Banner position</description>
<modifiers optional="true" initial="true"/>
<persistence type="property"/>
</attribute>
<attribute qualifier="altText" type="localized:java.lang.String">
<description>Banner alt text</description>
<modifiers optional="true" initial="true"/>
<persistence type="property"/>
</attribute>
<attribute qualifier="titleSecondary" type="localized:java.lang.String">
<description>Title secondary</description>
<persistence type="property" />
<modifiers />
</attribute>
<attribute qualifier="urlLoc" type="localized:java.lang.String">
<description>Banner url</description>
<persistence type="property" />
<modifiers />
</attribute>
</attributes>
</itemtype>