Question

Résumé

J'essaie d'exécuter un exemple d'application Web Java JPA 2.0.Le exemple d'application a été écrit pour fonctionner Glassfish, en utilisant EclipseLink en tant que fournisseur JPA.Je voudrais le convertir pour l'exécuter TomEE avec OpenJPA en tant que fournisseur JPA, mais je ne dispose pas de didacticiels détaillés pour être opérationnel avec OpenJPA.

Problème

j'ai du mal à me convertir persistence.xml travailler avec OpenJPA au lieu de EclipseLink.Plus précisément, le donné persistence.xml ne précise pas :

  • Entity Des classes.Sont-ils nécessaires ?
  • Le fournisseur JPA souhaité.Le conteneur sera-t-il par défaut quelque chose ?
  • Le pilote JDBC.Comment spécifier une base de données « en mémoire » (uniquement à des fins de test initial) ?

Aussi:

  • Comment les propriétés de génération DDL sont-elles exprimées dans OpenJPA ?Je n'ai pas réussi à les trouver Guide de l'utilisateur OpenJPA.

Détails

Ci-dessous se trouve l'EclipseLink persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
    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">
    <persistence-unit name="order" transaction-type="JTA">
        <jta-data-source>jdbc/__default</jta-data-source>
        <properties>
            <property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
            <property name="eclipselink.ddl-generation.output-mode"
                value="both" />
        </properties>
    </persistence-unit>
</persistence>

j'ai ce qui suit Entity Des classes:

  • order.entity.LineItem
  • order.entity.LineItemKey
  • order.entity.Order
  • order.entity.Part
  • order.entity.PartKey
  • order.entity.Vendor
  • order.entity.VendorPart

Question

  • Est-ce que quelqu'un sait à quoi ressemblerait l'équivalent persistence.xml pour OpenJPA ?
  • Alternativement, si quelqu'un pouvait m'indiquer un didacticiel OpenJPA qui couvre ces problèmes, ce serait tout aussi bien.
Était-ce utile?

La solution

Si vous ajoutez le openjpa.jdbc.SynchronizeMappings propriété comme indiqué ci-dessous OpenJPA créera automatiquement toutes vos tables, toutes vos clés primaires et toutes les clés étrangères exactement pour correspondre à vos objets

<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>

Alternativement, vous pouvez utiliser EclipseLink dans TomEE en ajoutant simplement les fichiers jar EclipseLink à <CATALINA_HOME>/lib/

référez-vous ici pour Propriétés communes de PersistenceProvider

Autres conseils

Contraintes de clé étrangère

La ligne suivante ne crée pas de clés étrangères :

<property name="openjpa.jdbc.SynchronizeMappings" 
          value="buildSchema(ForeignKeys=true)"/>

Crée uniquement le schéma et supprime le contenu d'une base de données.

Mais si vous souhaitez créer des clés étrangères, utilisez les lignes suivantes :

<property name="openjpa.jdbc.SynchronizeMappings" 
          value="buildSchema(foreignKeys=true,schemaAction='dropDB,add')"/>
<property name="openjpa.jdbc.SchemaFactory" 
          value="native(foreignKeys=true)" />
<property name="openjpa.jdbc.MappingDefaults" 
          value="ForeignKeyDeleteAction=restrict, JoinForeignKeyDeleteAction=restrict"/>

Voir le SQL généré

D'une autre manière, si vous souhaitez voir la sortie SQL :

<property name="openjpa.Log" 
          value="DefaultLevel=TRACE,SQL=TRACE" />

NOTE:Afin de voir la sortie générée dans la console TomEE, vous devez modifier le niveau de journalisation dans le fichier loggin.properties avec openjpa.level = FINEST


Voir plus dans http://openjpa.apache.org/faq.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top