如何在 Hybris 中创建复合唯一键

How to create composite unique key in Hybris

是否可以通过 items.xml 在 Hybris 中创建复合唯一键?

在给定的示例中:

        <itemtype  code="SimpleDevice">
            <deployment table="simpleDevice" typecode="20063"/>
            <attributes>
                <attribute qualifier="productId" type="java.lang.String">
                    <persistence type="property" />
                    <modifiers unique="true" optional="false" initial="true"/>
                    <description>Device's product ID</description>
                </attribute>
                <attribute qualifier="serialNumber" type="java.lang.String">
                    <persistence type="property" />
                    <modifiers unique="true" optional="false" initial="true"/>
                    <description>Device's serial number</description>
                </attribute>
            </attributes>
        </itemtype>

如何组合 2 属性使它们充当复合唯一键?我的 B 计划是使用一些拦截器在创建之前检查这样的组合是否已经存在。但我想避免在通过 Impex 导入多个项目时使数据库过载。

给出的例子已经正确。它使 productId 和 serialNumber 的组合独一无二。

您需要在 indexes 元素中添加新的唯一索引,以便在一个索引中同时使用多个属性。

<itemtype  code="SimpleDevice">
    <deployment table="simpleDevice" typecode="20063"/>
    <attributes>
        <attribute qualifier="productId" type="java.lang.String">
            <persistence type="property" />
            <modifiers unique="true" optional="false" initial="true"/>
            <description>Device's product ID</description>
        </attribute>
        <attribute qualifier="serialNumber" type="java.lang.String">
            <persistence type="property" />
            <modifiers unique="true" optional="false" initial="true"/>
            <description>Device's serial number</description>
        </attribute>
    </attributes>
    <indexes>
        <index name="SimpleDeviceIdx" unique="true">
            <key attribute="productId" />
            <key attribute="serialNumber" />
        </index>
    </indexes>  
</itemtype>