<?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
 
 https://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="PUNamed_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.mapping.Schema" value="applicationidentity0"/> 
    <property name="javax.jdo.option.Mapping" value="standard"/>
    <property name="datanucleus.metadata.xml.validate" value="false"/>
    <property name="datanucleus.schema.validateTables" value="false"/>
    <property name="datanucleus.schema.validateConstraints" value="false"/>
    <property name="datanucleus.schema.autoCreateAll" value="false"/>
    <property name="datanucleus.schema.autoCreateTables" value="false"/>
    <property name="datanucleus.schema.autoCreateConstraints" value="false"/>
    <property name="datanucleus.schema.autoCreateColumns" value="false"/>
    <property name="datanucleus.rdbms.CheckExistTablesOrViews" value="false"/>
    <property name="datanucleus.autoStartMechanism" value="None"/>
    </properties>
</persistence-unit>

<persistence-unit name="PUNamed_datastoreidentity0" 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.mapping.Schema" value="datastoreidentity0"/> 
    <property name="javax.jdo.option.Mapping" value="standard"/>
    <property name="datanucleus.metadata.xml.validate" value="false"/>
    <property name="datanucleus.schema.validateTables" value="false"/>
    <property name="datanucleus.schema.validateConstraints" value="false"/>
    <property name="datanucleus.schema.autoCreateAll" value="false"/>
    <property name="datanucleus.schema.autoCreateTables" value="false"/>
    <property name="datanucleus.schema.autoCreateConstraints" value="false"/>
    <property name="datanucleus.schema.autoCreateColumns" value="false"/>
    <property name="datanucleus.rdbms.CheckExistTablesOrViews" value="false"/>
    <property name="datanucleus.autoStartMechanism" value="None"/>
    </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>
