0

モデルから一貫してテーブルを作成する必要がある非常に基本的な JPA 実装を使用しています。
EclipseLink または TopLink (最新の Netbeans/Glassfish のデフォルトのいずれか) を使用していると思います。問題は、大文字と小文字が一致せず、列が順不同でテーブルが作成されることです。私にとっては、"User"テーブルを「ユーザー」として作成し、チームの他のメンバーのために作成します"USER"

を使用してみましたが、うまくいき@Table annotation (@Table(name="USer"))ません。

EclipseLinkで一貫した表名を生成するにはどうすればよいですか? 率直に言って、これはこのようなフレームワークにとってかなり素人っぽい間違いのように思えます。

サブ質問:これが問題である理由は、私の知る限り、デフォルトでEclipseLinkにスキーマ/データの移行を管理するデフォルトの方法がないためです。これを処理する方法はINSERT INTO's、データベースに必要なオブジェクトをブートストラップするために大量のオブジェクトを作成し、スキーマが変更されるたびにテーブルを削除して再作成することです。これがスキーマの変更を伝播するためのベストプラクティスではないことは知っています.標準のJPA実装でこれが通常どのように処理されるか知っている人はいますか?

ありがとう。

4

2 に答える 2

2

デフォルトでは、EclipseLink はテーブル名にすべて大文字を使用し、User クラスは USER になります。

name="USer" で @Table アノテーションを指定すると、テーブルは "USer" として作成されます。

おそらく、独自のスクリプトを使用してテーブルを作成しているか、データベースが OS または独自の設定に基づいて大文字と小文字を変更している可能性があります。どのデータベースを使用していますか?

EclipseLinkでロギングを有効にすると、実行中の正確なDDLが表示されます(DDLを実行している場合)。

EclipseLink 2.4 には、既存のテーブルを変更するための "create-or-extend-tables" DDL 生成オプションもあります。

于 2012-10-10T12:39:37.683 に答える
0

これに対する良い答えは見つかりませんでした。幸いなことに、テーブルを更新するために使用していた方法の回避策を見つけました。これは、大文字と小文字を区別しませんでした。

于 2012-10-24T23:23:55.210 に答える