【问题标题】:Effect of modifying a relation in Hybris在 Hybris 中修改关系的效果
【发布时间】:2022-10-25 05:43:46
【问题描述】:

我在 Hybris 有一个现有的关系。如果我修改关系会发生什么(可能会出错)。

例如-
如果我将有序属性添加到现有关系会发生什么。

<relation code="WishlistProductsRelation" generate="true" autocreate="true" localized="false">
            <deployment table="wishlistProductRel" typecode="26017" />
            <sourceElement qualifier="wishlists" type="Wishlist" collectiontype="list" cardinality="many">
                <modifiers read="true" write="true" search="true" />
            </sourceElement>
            <targetElement qualifier="products" type="Product" collectiontype="set" cardinality="many" ordered="true">
                <modifiers read="true" write="true" search="true" />
            </targetElement>
        </relation>

【问题讨论】:

    标签: java database sap-commerce-cloud


    【解决方案1】:

    很大程度上取决于您将要改变什么。

    在数据库中,当您进行修改时,不会删除任何内容,因此不会以这种方式丢失数据。典型的多对多关系表类似于PK;SourcePK;TargetPK。只要 sourcePK 和 targetPK 对于新类型仍然有效,就不会发生太多事情。

    改变部署变量(typecode/table) 将创建一个新表,您将丢失当前数据。但这可以让您重新开始,就好像它是一张新桌子一样。

    改变资源或者目标取决于您将它们更改为什么。如果类型继承自前一个类型(或者是当前类型的父类型),例如,如果您将 Product 更改为 VariantProduct,则与变体产品的所有关系都将保持存在。其他不再有效的值将在后台显示空值,但在代码中使用时可能会引发异常。始终建议在更新关系对象之前清除无效条目

    改变修饰符不会产生任何实际后果,与集合类型,尽管使用集合类型,您可能会破坏一些当前需要列表或集合的代码

    从改变多对多一对多将导致您丢失所有当前数据,因为这些类型的关系未存储在单独的部署表中。

    改变限定词源或目标只会破坏代码(和可能的现有查询),但会保留数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-11
      • 1970-01-01
      • 1970-01-01
      • 2015-03-29
      相关资源
      最近更新 更多