Domanda

Sommario

Sto cercando di eseguire un'applicazione Web Java JPA 2.0 Esempio. Applicazione di esempio è stata scritta per essere eseguita in Glassfish, utilizzando EclipseLink AS Provider JPA. Vorrei convertirlo per eseguire in TomEE con OpenJPA come provider JPA, ma non riesco ad avere nessun tutorial dettagliato per alzarsi e in esecuzione con OpenJPA.

Problema

Sto avendo problemi a convertire persistence.xml per lavorare con OpenJPA anziché EclipseLink. Più specificamente, il persistence.xml indicato non specifica:

È stato utile?

Soluzione

Se si aggiunge la proprietà openjpa.jdbc.SynchronizeMappings come mostrato di seguito OpenJPA, crea automaticamente tutte le tabelle, tutte le tue chiavi principali e tutte le chiavi straniere esattamente per corrispondere ai tuoi oggetti

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

In alternativa, è possibile utilizzare Eclipselink in Tomee aggiungendo solo i vasi Eclipselink a <CATALINA_HOME>/lib/

Riferisci qui per Proprietà comuni persistenzeProvider

Altri suggerimenti

Vincoli chiave straniere

La riga successiva non crea tasti estranei:

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

Crea solo schema ed elimina il contenuto di un database.

Ma se si desidera creare chiavi straniere, utilizzare le seguenti righe:

<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"/>
.

Vedere Generato SQL

In un altro modo, se si desidera visualizzare l'uscita SQL:

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

Nota : Per visualizzare l'uscita generata nella console Tomee, è necessario modificare il livello del registro nel file loggin.properties con openjpa.level = FINEST


.

Vedi altro in http://openjpa.apache.org/faq.html

.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top