在hybris类型的定义中,我很难理解这两个标签的含义:< custom-properties>和< attributes>
详细说明,第一个包含子标签< property>第二个包含子标签< attribute>。在“属性”标签中还有另一个标签< value>内容。
我所依据的示例代码取自hybris路径,即:
<itemtype
code="News"
autocreate="false"
generate="false">
<custom-properties>
<property name="catalogItemType"><value>java.lang.Boolean.TRUE</value></property>
<property name="catalogVersionAttributeQualifier"><value>"catalogVersion"</value></property>
<property name="uniqueKeyAttributeQualifier"><value>"id"</value></property>
</custom-properties>
<attributes>
<attribute qualifier="id" type="java.lang.String">
<modifiers initial="true" optional="false" write="true"/>
<persistence type="property"/>
</attribute>
<attribute qualifier="catalogVersion" type="CatalogVersion">
<modifiers initial="true" optional="false" write="true"/>
<persistence type="property"/>
</attribute>
</attributes>
</itemtype>
总体而言,这两个标签之间有什么区别&lt; custom-properties&gt;和&lt; attributes&gt;?
答案 0 :(得分:3)
项目属性定义项目的状态。它们实际上是由于平台构建和更新过程而创建的db表的列(动态属性除外)。
自定义属性是某些已定义的属性,这些属性在类型系统定义中用于定义类型的某些属性。通常,如果您解释类型系统的元数据,则可以读取属性以实现所需的行为。它们可以在不同的级别定义
<custom-properties>
<property name="catalogItemType"><value>java.lang.Boolean.TRUE</value></property>
<property name="catalogVersionAttributeQualifier"><value>"catalogVersion"</value></property>
<property name="uniqueKeyAttributeQualifier"><value>"id"</value></property>
</custom-properties>
这些属性是在类型级别定义的 - 这些属性在类型级别提供目录感知。这些属性可以在运行时通过getProperty(String propertyName)方法检索这些项类型属性。还有其他示例。
<relation code="User2Addresses" generate="true" localized="false" autocreate="true">
<sourceElement type="User" cardinality="one" qualifier="owner">
<modifiers read="true" write="true" search="true" optional="true" initial="false"/>
</sourceElement>
<targetElement type="Address" cardinality="many" qualifier="addresses">
<modifiers read="true" write="true" search="true" optional="true" partof="true"/>
<custom-properties>
<property name="condition.query">
<value>"{original} is null"</value>
</property>
</custom-properties>
</targetElement>
</relation>
该属性包含一个字符串,该字符串稍后会添加到为一对多或多对一关系生成的选择查询的“where”部分。
<relation code="AbstractOrder2AbstractOrderEntry" localized="false" generate="true" autocreate="true">
<sourceElement type="AbstractOrder" qualifier="order" cardinality="one">
<modifiers read="true" write="true" search="true" optional="true" />
<custom-properties>
<property name="ordering.attribute">
<value>"entryNumber"</value>
</property>
</custom-properties>
</sourceElement>
<targetElement type="AbstractOrderEntry" qualifier="entries" cardinality="many" collectiontype="list" ordered="false" >
<modifiers read="true" write="true" search="true" optional="true" partof="true" />
</targetElement>
</relation>
<property name="readOnlyForUI">
<value>Boolean.TRUE</value>
</property>
<property name="hiddenForUI">
<value>Boolean.TRUE</value>
</property>
希望这有帮助!
答案 1 :(得分:2)
<custom-properties>
<property name="catalogItemType">
<value>java.lang.Boolean.TRUE</value>
</property>
<property name="catalogVersionAttributeQualifier">
<value>"catalogVersion"</value>
</property>
<property name="uniqueKeyAttributeQualifier">
<value>"code"</value>
</property>
</custom-properties>
这些<custom-properties>
用于将ItemType定义为目录感知。与产品类型一样。您可以参考this post了解更多详情。
<attribute>
用于定义和配置表/项的列。
在SQL中,我可以说<custom-properties>
用于表级配置(元数据),<attribute>
用于定义和配置该表的列。