在Hybris项目中,我创建了 new " custom" items.xml 中的实体(从GenericItem扩展)。 在 ant清除所有和 ant初始化之后,所有表格都会完美生成,但可选和唯一修饰符不会#39; t对指定的属性有任何影响。 我的items.xml的片段:
<attribute qualifier="someQualifier" type="java.lang.Long">
<description>some desctiontion</description>
<persistence type="property"/>
<modifiers optional="false" unique="true"/>
</attribute>
在我的数据库中(在MySQL和HSQL上测试),可选且唯一的标记属性仍然具有默认值(nullable = true,unique = false)。 这可能是什么问题?
答案 0 :(得分:3)
这些修饰符用于对应的ValidateInterceptor,而不是表结构。 要指定列定义,请使用:
<persistence type="property">
<columntype database="mysql">
<value>int(11) not null</value>
</columntype>
....
</persistence>
要使其唯一,请将索引定义添加到itemtype
<indexes>
<index name="someQualifierIDX" unique="true">
<key attribute="someQualifier"/>
</index>
<indexes>
答案 1 :(得分:0)
这里的问题是jaloclass。在ant all
之后,它会尝试在-items.xml文件中为您的itemtype创建一个jaloclass。如果您的itemtype没有jaloclass,则会使用您的修饰符创建。
另一方面,如果您尝试在-items.xml文件中修改(或删除)itemtype,则表示您的itemtype存在现有的jaloclass。它无法修改修饰符。要更新修饰符,您应该删除ant all
之前的jaloclass。