2012-03-14 4 views
1

私は、ユーザー定義のカスタムフィールドをEclipseLinkの既存のエンティティに追加したいと考えています。パフォーマンス上の理由から、それらをエンティティのテーブルに直接格納する必要があります。また、それらを「ファーストクラスの市民」、つまりクエリで使用できるようにしたいと考えています。EclipseLinkを使用してエンティティにカスタム(ユーザ定義)プロパティを追加する方法は?

実装の観点から、実体は、カスタムフィールドを設定および取得するには2つの方法を持っている必要があります:カスタムプロパティfooを設定する場合、EclipseLinkのはcustom_fooというフィールドにエンティティのテーブルに値を格納する必要があり

public Object getCustomProperty(String key) { ... } 
public void setCustomProperty(String key, Object value) { ... } 

を。

エンドユーザーの観点から、ユーザーがカスタムフィールドを定義して管理できるGUIを提供したいと思います。このカスタムフィールドは、データベースに動的に追加または削除されます。

これはEclipseLinkで可能ですか?

よろしく、 ヨッヘン

答えて

1

チェックアウトのEclipseLinkの拡張機能 http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Extensible_Entities 追加する列に対するこれとサポート: http://wiki.eclipse.org/EclipseLink/DesignDocs/368365 は多少のように思える何を求めている - それは保管してはならないという矛盾する声明を除き、メインテーブルでは、その後、エンティティのテーブル「custom_foo」カラムに格納する必要があります。

マッピングを作成するGUIを作成する必要があります。 Eclipselinkには、orm.xmlファイルから読み取るメタデータ・ソース実装が付属しているため、GUIがormファイルに書き込めない場合に使用するEclipseLink用の独自の実装を作成する必要があります。

+0

スーパー。これは私が必要とするものです。誤って削除しないでください、ありがとう! – Jochen