<?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"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0">

    <persistence-unit name="James" transaction-type="RESOURCE_LOCAL">
        <class>org.apache.james.mailbox.jpa.mail.model.JPAMailbox</class>
        <class>org.apache.james.mailbox.jpa.mail.model.JPAUserFlag</class>
        <class>org.apache.james.mailbox.jpa.mail.model.openjpa.AbstractJPAMailboxMessage</class>
        <class>org.apache.james.mailbox.jpa.mail.model.openjpa.JPAMailboxMessage</class>
        <class>org.apache.james.mailbox.jpa.mail.model.JPAProperty</class>
        <class>org.apache.james.mailbox.jpa.user.model.JPASubscription</class>
        <class>org.apache.james.mailbox.jpa.quota.model.MaxDomainMessageCount</class>
        <class>org.apache.james.mailbox.jpa.quota.model.MaxDomainStorage</class>
        <class>org.apache.james.mailbox.jpa.quota.model.MaxGlobalMessageCount</class>
        <class>org.apache.james.mailbox.jpa.quota.model.MaxGlobalStorage</class>
        <class>org.apache.james.mailbox.jpa.quota.model.MaxUserMessageCount</class>
        <class>org.apache.james.mailbox.jpa.quota.model.MaxUserStorage</class>
        <class>org.apache.james.mailbox.jpa.quota.model.JpaCurrentQuota</class>
        <class>org.apache.james.mailbox.jpa.mail.model.JPAMailboxAnnotation</class>
        <class>org.apache.james.mailbox.jpa.mail.model.JPAMailboxAnnotationId</class>
        <class>org.apache.james.mailbox.jpa.mail.model.openjpa.AbstractJPAMailboxMessage$MailboxIdUidKey</class>
        <properties>
            <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
            <property name="openjpa.jdbc.MappingDefaults" value="ForeignKeyDeleteAction=cascade, JoinForeignKeyDeleteAction=cascade"/>
            <property name="openjpa.jdbc.SchemaFactory" value="native(ForeignKeys=true)"/>
            <property name="openjpa.jdbc.QuerySQLCache" value="false"/>
        </properties>

    </persistence-unit>

</persistence>
