<?xml version="1.0" encoding="UTF-8"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
-->
<entity-mappings 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://localhost:11666/orm_2_2.xsd"
    version="2.2">
    <persistence-unit-metadata>
        <persistence-unit-defaults>
            <description> This is an orm 2.0 element</description>
        </persistence-unit-defaults>
    </persistence-unit-metadata>
    <package>
        org.apache.openjpa.persistence.xml
    </package>
    <entity name="SimpleXml" class="SimpleXmlEntity">
        <named-query name="SimpleXml.findAll">
            <query>select o from SimpleXml o</query>
        </named-query>
        <named-query name="SimpleXmlEntity.findAll">
            <query>select o from SimpleXmlEntity o</query>
        </named-query>
        <attributes>
            <id name="id">
                <generated-value generator="uuid-hex"/>
            </id>
            <basic name="stringField"/>
            <version name="version"/>
        </attributes>
    </entity>
</entity-mappings>
