質問

まとめ

Java Web アプリケーション JPA 2.0 の例を実行しようとしています。の アプリケーション例 で実行するように書かれていました Glassfish, を使用して EclipseLink JPAプロバイダーとして。実行できるように変換したいと思います TomEEOpenJPA JPAプロバイダーとして使用していますが、起動して実行するための詳細なチュートリアルはありません OpenJPA.

問題

変換できなくて困っています persistence.xml 一緒に働く OpenJPA の代わりに EclipseLink. 。より具体的には、与えられた persistence.xml 指定していません:

  • Entity クラス。これらは必要ですか?
  • 目的の JPA プロバイダー。コンテナはデフォルトで何かを設定するのでしょうか?
  • JDBCドライバー。「メモリ内」DB (初期テスト目的のみ) を指定するにはどうすればよいですか?

また:

  • OpenJPA では DDL 生成プロパティはどのように表現されますか?それらを見つけることができませんでした OpenJPA ユーザーガイド.

詳細

以下は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>

私は次のものを持っています Entity クラス:

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

質問

  • 同等のpersistence.xmlがOpenJPAでどのようになるか知っている人はいますか?
  • あるいは、これらの問題をカバーする OpenJPA チュートリアルを誰かが私に教えてくれれば、それも同様に良いでしょう
役に立ちましたか?

解決

を追加すると、 openjpa.jdbc.SynchronizeMappings 以下に示すプロパティを OpenJPA が作成すると、オブジェクトに正確に一致するように、すべてのテーブル、すべての主キー、およびすべての外部キーが自動的に作成されます。

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

あるいは、EclipseLink jar を TomEE に追加するだけで EclipseLink を使用できます。 <CATALINA_HOME>/lib/

ここを参照してください 共通の PersistenceProvider プロパティ

他のヒント

外部キー制約

次の行では外部キーは作成されません。

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

スキーマの作成とデータベースのコンテンツの削除のみを行います。

ただし、外部キーを作成したい場合は、次の行を使用します。

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

生成されたSQLを参照

別の方法で SQL 出力を確認したい場合は、次のようにします。

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

注記:TomEE コンソールで生成された出力を確認するには、ファイル内のログ レベルを変更する必要があります。 loggin.propertiesopenjpa.level = FINEST


もっと見る http://openjpa.apache.org/faq.html

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top