3

SQLスキーマを手動で定義し、その上でJPA 2.0を使用してスキーマを使用しています。JPA がアプリケーションの andy スキーマを生成/作成することを許可していません。そうしている間、私は下記のプロパティで休止状態を使用していました

<property name="hibernate.hbm2ddl.auto" value="validate"/>

定義されたJPAに従ってテーブル定義が有効かどうかを検証するために使用され、そうでない場合、テーブルとJPAの間に不一致が見つかったときにアプリサーバーが起動しませんでした。

今、私はEclipseリンクに移動しています.

<property name="eclipselink.ddl-generation" value="none" />

そのため、Eclipse リンクは再びスキーマを生成していませんが、休止状態にある検証に相当するものはないようです。

私のJPAに追加の列が定義されていて、テーブルに定義されていない場合、Webアプリも正常に起動します.テーブルに対して最初の挿入が行われたときにのみ、検証が失敗し、示されているように例外がスローされます.

Caused by: java.sql.SQLSyntaxErrorException: 'OTHERNAME' is not a column in table or VTI 'APP.BSREQUEST'.

Web アプリの永続性をチェックして、起動時に問題がなく、最初の挿入/削除が発生するのを待たずに検証するにはどうすればよいですか。

私が使用できるEclipseリンクに相当するものはありますか。

これを使用してみましたが、これは役に立ちません。最初の永続化/削除操作中に検証が引き続き行われます。

<property name="eclipselink.orm.validate.schema" value="true"/>

誰でもこれについて良い考えを持っていますか?

4

2 に答える 2

1

実行時に、EclipseLink はデータベース メタデータを読み取りません。有効にした eclipselink.orm.validate.schema プロパティにより、JPA orm.xml ファイルの XML スキーマ検証がオンになります。

優れた設計時のマッピング/スキーマ/Java 検証のために、 Eclipse IDE for Java EE DevelopersディストリビューションおよびOracle Enterprise Pack for Eclipseの一部として出荷されるJPA ツール ( Dali Java Persistence ツール) を使用できます。

Dali は、存在しない列にマッピングしているかどうかを通知し、統合されたスキーマ コード補完と、エラーを修正するために使用できるリッチ エディターの両方を提供します。

于 2013-03-05T15:14:56.293 に答える
0

永続性ユニット プロパティはありませんが、EclipseLink は IntegrityChecker を通じてこれをサポートします。これは、SessionCustomizer を介して有効にすることができます。

于 2013-03-05T15:44:10.823 に答える