1

私はそのようなエンティティの構造を持っています:

Product  1 -> N   ProductCustomField
  1                       1
  |                       |
  M                       M'
Release  1 -> N'  ReleaseCustomField

ProductCustomField「プロトタイプ」のようなものです - Release が持つ可能性のあるフィールドのリストです。

ReleaseすべてReleaseCustomFieldsのオブジェクトProductCustomFieldProduct含まれる単一のオブジェクトを選択したいと思いますRelease

例:

MySoft には、デフォルト値が "" のカスタム フィールド "downloadURL" があります。MySoft にはリリース 1.0 があります。このリリースには ReleaseCustomFields はありませんが、MySoft のリリースであるため、"downloadURL" カスタム フィールドがある可能性があることがわかります。

そこで、「downloadURL」が定義されるマップ (デフォルト値は「」) を備えた MySoft 1.0 のリリースを希望します。

SQLで何をするかはわかっています。それは長くて複雑なSELECTですが、可能です。
JPA / Hibernateでそれを把握する方法がわかりません。

これが で達成しようとするのが正しいことかどうかはわかりませんSELECT。たぶん、Releaseのカスタムフィールドに INSERT を入力してから、単にマッピングに依存する必要があります (これは既に機能しています)。または、特別なクエリで満たされた に
特別なプロパティを作成する必要がありますか? (注釈Releaseを使用してもかまいません。)または 、最も単純なことを行う必要があります。org.hibernate.*
release.getProduct().getCustomFields()ProductCustomFieldReleaseCustomFieldProductCustomField#getDefault()

4

1 に答える 1

0

私は3番目のアプローチを選択しました。私は Wicket フレームワークを使用しているので、与えられたreleaserelease.getProduct.getCustomFields().get("fieldName")がデフォルト値または実際の値のいずれかを取得でき、書き込み時にreleasesフィールド値マップを更新するモデルを作成しました。

私は取得し始めましIllegalArgumentException: object is not an instance of declaring classたが、それはおそらく別の問題です。

于 2013-01-29T01:43:47.480 に答える