<?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.
-->
<orm xmlns="https://db.apache.org/jdo/xmlns/orm"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="https://db.apache.org/jdo/xmlns/orm
     https://db.apache.org/jdo/xmlns/orm_3_2.xsd">
<!--
This file contains the schema information when an implementation
has application identity.
-->
    <package name="org.apache.jdo.tck.pc.order">

        <class name="Order" table="Orders">
            <field name="orderId" column="ID"/>
            <field name="customerId" column="CUSTOMERID"/>
            <field name="items" mapped-by="order"/>
        </class>

        <class name="OrderItem" table="Item">
            <field name="item" column="ID"/>
            <field name="order" column="ORDERID">
                <foreign-key/>
            </field>
            <field name="description" column="DESCRIPTION"/>
            <field name="quantity" column="QUANTITY"/>
        </class>
    </package>
</orm>
