<?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="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>
