<?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.   
-->
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             version="1.0">

<!--
        We need to enumerate each persistent class first in the persistence.xml
        See: http://issues.apache.org/jira/browse/OPENJPA-78
    -->
<persistence-unit name="none" transaction-type="RESOURCE_LOCAL">
    <!--
        <class>hellojpa.Message</class>
        <class>relations.Deity</class>
        -->
</persistence-unit>

<!--
        A persistence unit is a set of listed persistent entities as well
        the configuration of an EntityManagerFactory. We configure each
        example in a separate persistence-unit.
    -->
<persistence-unit name="applicationidentity0" transaction-type="RESOURCE_LOCAL">
    <!--
            The default provider can be OpenJPA, or some other product.
            This element is optional if OpenJPA is the only JPA provider
            in the current classloading environment, but can be specified
            in cases where there are multiple JPA implementations available.
        -->
    
    <properties>
    <property name="javax.jdo.option.ConnectionDriverName"
              value="org.apache.derby.jdbc.EmbeddedDriver"/>
    <property name="javax.jdo.option.ConnectionURL" value="jdbc:derby:jdotckdb"/>
    <property name="javax.jdo.option.ConnectionUserName" value="tckuser"/>
    <property name="javax.jdo.option.ConnectionPassword" value="tckuser"/>
    <property name="javax.jdo.option.Optimistic" value="false"/>
    <property name="javax.jdo.option.RestoreValues" value="false"/>
    <property name="javax.jdo.option.RetainValues" value="false"/>
    <property name="javax.jdo.option.Mapping" value="derby"/>
    <property name="javax.jdo.mapping.Schema" value="applicationidentity0"/> 
    <property name="javax.jdo.option.Mapping" value="standard"/>
    <property name="org.jpox.metadata.validate" value="false"/>
    <property name="org.jpox.validateTables" value="false"/>
    <property name="org.jpox.validateConstraints" value="false"/>
    <property name="org.jpox.autoCreateSchema" value="false"/>
    <property name="org.jpox.autoCreateTables" value="false"/>
    <property name="org.jpox.autoCreateConstraints" value="false"/>
    <property name="org.jpox.autoCreateColumns" value="false"/>
    <property name="org.jpox.rdbms.CheckExistTablesOrViews" value="false"/>
    <property name="org.jpox.autoStartMechanism" value="None"/>
    <property name="org.jpox.connectionPoolingType" value="C3P0"/>
    <property name="org.jpox.implementationCreatorName" value="asm"/>
    </properties>
</persistence-unit>

<!-- persistence unit for the "relations" example -->
<persistence-unit name="relations" transaction-type="RESOURCE_LOCAL">
    <class>relations.Deity</class>
</persistence-unit>

<!-- persistence unit for the "reversemapping" example -->
<persistence-unit name="reversemapping" transaction-type="RESOURCE_LOCAL">
    <!--
        <mapping-file>reversemapping/orm.xml</mapping-file>
        -->
</persistence-unit>
</persistence>