Hybris中修改关系的效果



我在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>

很大程度上取决于您将要更改的内容。

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

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

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

更改修饰符不会产生实际后果,与CollectionType相同,但对于集合类型,您可能会破坏一些当前需要列表或设置的代码

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

更改源或目标的限定符只会破坏代码(以及可能的现有查询(,但会保留数据。

最新更新