<!--

    Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0 which is available at
    http://www.eclipse.org/legal/epl-2.0,
    or the Eclipse Distribution License v. 1.0 which is available at
    http://www.eclipse.org/org/documents/edl-v10.php.

    SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause

-->

<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd" version="1.0">
    <persistence-unit name="metamodel1" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <!-- class>org.eclipse.persistence.testing.models.jpa.metamodel.ArrayProcessor</class-->
        <class>org.eclipse.persistence.testing.models.jpa.metamodel.Board</class>
        <class>org.eclipse.persistence.testing.models.jpa.metamodel.Computer</class>
        <class>org.eclipse.persistence.testing.models.jpa.metamodel.Corporation</class>
        <class>org.eclipse.persistence.testing.models.jpa.metamodel.Enclosure</class>
        <class>org.eclipse.persistence.testing.models.jpa.metamodel.GalacticPosition</class>
        <class>org.eclipse.persistence.testing.models.jpa.metamodel.Location</class>
        <class>org.eclipse.persistence.testing.models.jpa.metamodel.Manufacturer</class>
        <class>org.eclipse.persistence.testing.models.jpa.metamodel.Processor</class>
        <class>org.eclipse.persistence.testing.models.jpa.metamodel.SoftwareDesigner</class>
        <class>org.eclipse.persistence.testing.models.jpa.metamodel.HardwareDesigner</class>
        <class>org.eclipse.persistence.testing.models.jpa.metamodel.User</class>
        <class>org.eclipse.persistence.testing.models.jpa.metamodel.ArrayProcessor</class>
        <!-- class>org.eclipse.persistence.testing.models.jpa.metamodel.ScalarProcessor</class-->
        <class>org.eclipse.persistence.testing.models.jpa.metamodel.VectorProcessor</class>
        <class>org.eclipse.persistence.testing.models.jpa.metamodel.MS_MS_Entity_Leaf</class>
        <!-- 300051: added to test @EmbeddedId:CPUEmbeddedId directly on @MappedSuperclass:CPU -->
        <class>org.eclipse.persistence.testing.models.jpa.metamodel.MultiCoreCPU</class>
        <class>org.eclipse.persistence.testing.models.jpa.metamodel.Core</class>
        <!-- The following Position class is for reference - and should be commented as it is a Transient or BasicType -->
        <!-- class>org.eclipse.persistence.testing.models.jpa.metamodel.Position</class-->
        <!-- 248780: Refactor Cache Implementation surrounding evict() and MappedSuperclass support -->
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties>
             <property name="eclipselink.weaving" value="false"/>
             <property name="eclipselink.session-name" value="metamodel"/>
        </properties>
    </persistence-unit>
</persistence>
