Файл сопоставления JPA ORM.xml в ‹mapped-superclass› не может объединить ‹basic› ‹id › или ‹version ›

У меня есть много классов с аннотациями JPA, и мне нужно изменить его на файл отображения формы.

Но в XML есть странная ошибка

Мой XML

<?xml version="1.0" encoding="UTF-8"?>
 <entity-mappings version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence/orm"   
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence/orm 
                    http://xmlns.jcp.org/xml/ns/persistence/orm
 cvc-complex-type.2.4.a: Invalid content was found starting with element 'basic'. One of              {"xmlns.jcp.org/xml/ns/persistence/orm":version "http://xmlns.jcp.org/xml/ns/persistence/orm":many- to-one, http://xmlns.jcp.org/xml/ns/persistence/orm":one-to-many, "    http://xmlns.jcp.org/xml/ns/
         persistence/orm":one-to-one, "http://xmlns.jcp.org/xml/ns/persistence/orm":many-to-many,  "http:// xmlns.jcp.org/xml/ns/persistence/orm":element-collection,    "http://xmlns.jcp.org/xml/ns/persistence/ orm":embedded, http://xmlns.jcp.org/xml/ns/persistence/orm":transient}' is expected.
1.xsd"> <mapped-superclass class="model.base.BaseModel"> <entity-listeners> <entity-listener class="model.base.BaseModelListener"></entity-listener> </entity-listeners> <attributes> <id name="id"> <generated-value strategy="IDENTITY" /> </id> <version name="version"></version> <basic name="createdAt" optional="false"> <column name="updated_at" nullable="false" /> <temporal>TIMESTAMP</temporal> </basic> <basic name="updatedAt" optional="false"> <column name="updated_at" nullable="false" /> <temporal>TIMESTAMP</temporal> </basic> </attributes> </mapped-superclass> <entity class="model.general.Account"> <attributes> <basic name="email"> </basic> </attributes> </entity>

if has < id> tag or < version> tag together < basic> show the error :

 cvc-complex-type.2.4.a: Invalid content was found starting with element 'basic'. One of              {"xmlns.jcp.org/xml/ns/persistence/orm":version "http://xmlns.jcp.org/xml/ns/persistence/orm":many- to-one, http://xmlns.jcp.org/xml/ns/persistence/orm":one-to-many, "    http://xmlns.jcp.org/xml/ns/
         persistence/orm":one-to-one, "http://xmlns.jcp.org/xml/ns/persistence/orm":many-to-many,  "http:// xmlns.jcp.org/xml/ns/persistence/orm":element-collection,    "http://xmlns.jcp.org/xml/ns/persistence/ orm":embedded, http://xmlns.jcp.org/xml/ns/persistence/orm":transient}' is expected.

Что случилось? Могу ли я определить атрибут в суперклассе в формате .xml, как это определено в классе модели с аннотацией? Т

Класс с аннотацией работает без проблем, есть ли какие-либо ограничения при использовании .xml, чем аннотация?


person Rodrigo Rodrigues    schedule 23.01.2014    source источник


Ответы (1)


Элемент version должен располагаться сразу после последнего появления элемента basic, а не перед ними, как сейчас.

В этом случае правильный порядок:

    <id name="id">
        <generated-value strategy="IDENTITY" />
    </id>

    <basic name="createdAt" optional="false">
        <column name="updated_at" nullable="false" />
        <temporal>TIMESTAMP</temporal>
    </basic>

    <basic name="updatedAt" optional="false">
        <column name="updated_at" nullable="false" />
        <temporal>TIMESTAMP</temporal>
    </basic>

    <version name="version"></version>

В качестве примечания столбец updated_at, кажется, отображается дважды.

Этот порядок элементов под элементом attributes определен в схеме:

<xsd:sequence>
  ....
  <xsd:choice>
    <xsd:element name="id" type="orm:id" 
                 minOccurs="0" maxOccurs="unbounded"/>
    <xsd:element name="embedded-id" type="orm:embedded-id" 
                 minOccurs="0"/>
  </xsd:choice>
  <xsd:element name="basic" type="orm:basic"
               minOccurs="0" maxOccurs="unbounded"/>
  <xsd:element name="version" type="orm:version"
               minOccurs="0" maxOccurs="unbounded"/>
  <xsd:element name="many-to-one" type="orm:many-to-one"
               minOccurs="0" maxOccurs="unbounded"/>
....
</xsd:sequence>
person Mikko Maunu    schedule 24.01.2014