JPA orm.xml支持数据库索引

时间:2017-02-07 10:00:19

标签: java xml hibernate jpa orm

我没有看到任何选项,例如 orm.xml 文件中的 JPA2

<basic name="developer">
    <index />
    <column name="developer"/>
</basic>

我看到有 hbm.xml 文件,但是我想知道 JPA 2.0 是否真的缺少此功能作为标准的一部分。

所以我可以避免转换为 hbm.xml 文件......

1 个答案:

答案 0 :(得分:0)

JPA 2.0 table XSD类型如下所示:

<xsd:complexType name="table">
    <xsd:sequence>
        <xsd:element name="unique-constraint" type="orm:unique-constraint" 
                   minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string"/>
    <xsd:attribute name="catalog" type="xsd:string"/>
    <xsd:attribute name="schema" type="xsd:string"/>
</xsd:complexType>

虽然JPA 2.1如下所示:

<xsd:complexType name="table">
    <xsd:sequence>
      <xsd:element name="unique-constraint" type="orm:unique-constraint" 
                   minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="index" type="orm:index" 
                   minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string"/>
    <xsd:attribute name="catalog" type="xsd:string"/>
    <xsd:attribute name="schema" type="xsd:string"/>
</xsd:complexType>

因此,您不会在每个实体级别提供index类型的table属性:

<entity class="Post" access="FIELD">
    <table>
        <index column-list="first_name,last_name" name="name_idx" unique="true"/>
    </table>
    <attributes>
        ...
    </attributes>
</entity>

但是,您不需要在应用程序中使用HBM2DDL。只需use Flyway instead and you are way better off