2011-01-06 14 views
3

私のIDEはEclipseです.Heliosと私はmojarra jsf、mysql、eclipselink for jpaを使用しています。eclipselinkは注釈付きJPAクラスからテーブルを生成しません

私のプロジェクトでは、mysqlでテーブルを手動で作成すると、「JPA Details」ビューにそれらのテーブルが表示されます。そして私がテーブルを作成しなければ、Eclipse IDEはエラーを表示します。 "テーブル"のトレーニングセッションは "解決できません"。

何が問題なのかよくわかりません。 JPAはいつこれらのテーブルを作成しますか?そしてどうやって ?次のように 私の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="wompower2" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <jta-data-source>trainer</jta-data-source> 
    <class>com.jsfcompref.trainer.entity.User</class> 
    <class>com.jsfcompref.trainer.entity.TrainingSession</class> 
    <class>com.jsfcompref.trainer.entity.Event</class> 
    <class>com.jsfcompref.trainer.entity.AbstractEntity</class> 
    <validation-mode>NONE</validation-mode> 
    <properties> 
     <property name="eclipselink.target-database" value="MySQL"/> 
     <property name="eclipselink.ddl-generation" value="create-tables"/> 
     <property name="eclipselink.ddl-generation.output-mode" value="both"/> 
     <property name="eclipselink.application-location" value="C:\wompower2\DDL"/> 
     <property name="eclipselink.create-ddl-jdbc-file-name" value="create.sql"/> 
     <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/demo"></property> 
     <property name="javax.persistence.jdbc.user" value="user"></property> 
     <property name="javax.persistence.jdbc.password" value="pwd"></property> 
     <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"></property> 
    </properties> 
    </persistence-unit> 
</persistence> 

は、 Arindam、ありがとうございました。

答えて

2

まず、JPAがORMの標準仕様であり、EclipseLinkが仕様の実装者の1つであることを明確にします(Hibernateは別の例です)。この仕様では、スキーマまたは表の作成は必須ではありませんが、EclipseLinkは構成を使用して表を作成するメカニズムを提供します。 java2db - 以下は

<property name="eclipselink.ddl-generation" value="create-tables" /> 
<property name="eclipselink.ddl-generation.output-mode" value="database" /> 

this tutorial for more information(特に3.2節)を介して行くことを制御する2つの設定のプロパティ

+0

これらのプロパティは、私のpersistence.xmlに設定されています。しかし、それは動作しません。それから、jpaプロバイダをhibernateに変更し、persistence.xmlで "hibernate.hbm2ddl.auto" value = "create"を使用しました。これらのテーブルを作成するには小さなJavaクラスを作成しましたが、エラーをスローします。「クラスパスで参照されているプロジェクトは存在しません」 public class CreateTable { public static void main(String [] args){ 構成cfg = new Configuration(); cfg.addAnnotatedClass(Event.class); cfg.configure(); 新しいSchemaExport(cfg)。作成する(真、真)。 – Arindam

+0

私は何か間違っていると確信しています。私が何をする必要があるかを指摘できれば、それは素晴らしいことだ。あるいは、良いリソース/書籍などがある場合は、それを指摘してください。 – Arindam

+0

"クラスパスで参照されているプロジェクトは存在しません"というエラーは、このエラーをすべて示しています。ビルドパスの問題があります。コードを共有することなく実際の問題が何であるかを伝えるのは難しいです。コードを共有すると私は助けることができます –

2

GlassFishのは、それが自身のテーブル生成機能を使用するかどうかを決定するプロパティeclipselink.ddl-generationを読み込みます。これは、展開中およびターゲットがDASの場合にのみ機能します。

の値に関係なく、java2dbを使用する場合(スクリプトを実行できるように)、GlassFishは「sql-script」に設定します(無効にした場合は「なし」)。 。 glassfish3/persistence/jpa-connector/src/main/java/org/glassfish/persistence/jpa/PersistenceUnitLoader.javaを参照してください。

1

私はが、私はJPA、MySQLの、Eclipseので作られたテストのカップルの後に報告されている「テーブル 『nnnは』を解決できません」を見ました。

私の問題は自分自身によって引き起こされました。私はテスト中にデータ接続を切り替えました。しかし、私がJPAプラグインであると仮定したツールは、定義した最初のデータ接続に対してテーブル名の検証を続けていました。

だから、私のソリューションでした:

プロジェクトを開く特定のJPAのプロパティ(右クリックプロジェクト - > JPA)との接続設定が正しいデータベースを参照することを確認してください。リビルド...それだけです。

0

これは少し遅れていますが、誰かがこの問題を抱えている場合に備えてです。あなたは、日付ベースに対してopetarionを作成するだけで、テーブルが作成されます。それは以前私のために働いてきました。私はこれが同じ問題を抱えている人を助けることを願っています

関連する問題