Hybris - 覆盖项目类型的现有唯一属性,使它们不唯一

Hen*_*ine 5 attributes overriding unique hybris

在我的 hybris 应用程序中,我想覆盖我的 CustomerReview 项目类型,以便其属性productuser不再是唯一的。

这些属性的唯一性在 CustomerReview 和 Product/User 之间的关系中声明。我尝试将关系声明再次添加到我的extname-items.xml 文件并设置适当的 unique="false" 属性,如下所示:

<relation generate="false" localized="false" code="ReviewToUserRel" autocreate="false">
    <sourceElement type="User" qualifier="user" cardinality="one">
        <modifiers write="false" initial="true" optional="false" unique="false" />
    </sourceElement>
    <targetElement type="CustomerReview" qualifier="customerReviews" cardinality="many">
        <modifiers write="false" initial="true" />
    </targetElement>
</relation>
Run Code Online (Sandbox Code Playgroud)

但这并不能解决问题。在我重建应用程序并更新运行系统后,CustomerReview的用户产品属性仍然是唯一的属性。

那么这个问题的最佳解决方案是什么?

Pea*_*ade 4

确实,重写关系不会覆盖它。

解决此问题的另一种方法是向类型添加属性并将其设置为唯一。例如emailAddress

<itemtype code="CustomerReview" autocreate="false" generate="false">
    <attributes>
                <attribute type="java.lang.String" qualifier="email">
                    <persistence type="property" />
                    <modifiers read="true" write="true" unique="true"/>
                </attribute>
     </attributes>
</itemtype>
Run Code Online (Sandbox Code Playgroud)

然后,您可以得到同一用户对同一产品的多个评论,只要它们emailAddress不同即可。