ちょっと変わったデザインに出くわしましたが、どうやって扱うのかよくわかりません。マップしようとしているテーブルは次のようになります。
TABLE example {
ID INT,
CATEGORY VARCHAR,
PROPERTY VARCHAR,
VALUE VARCHAR);
1つのIDに複数の行を含めることができます(明らかに、主キーではありません)。例として、次のようになります。
# ID CATEGORY PROPERTY VALUE
1 general_info name order 1
1 general_info date 1/1/2009
...
すべてのIDには、いくつかの異なるカテゴリがあります。プロパティ名は、特定の(id、category)の組み合わせに対して一意です。
(編集)IDフィールドは、別のテーブル内のオブジェクトへの外部キーです。IDフィールドのみを使用して、これらのオブジェクトからこのテーブルに格納されているさまざまなプロパティにアクセスできる必要があります。複合キーが進むべき道である場合、どうすればそれらをリンクできますか?
(EDIT2)また、ここで欠落している詳細は、列1の同じIDを持つすべてのデータが概念的に同じオブジェクトに属していることだと思います。(ID、CATEGORY)の組み合わせごとに個別のインスタンスは必要ありません。
明らかに、これはあまり正規化されていません。最悪のシナリオでは、正規化されてすべてをコピーする追加のテーブルをいくつか設定しましたが、この情報を休止状態のバックアップオブジェクトに直接取得するための賢明な方法を誰かが提案できるかどうか疑問に思いました。必要に応じて、Stringプロパティのある種のバッグに入れます。
ところで、hibernate-annotationsを使用しています。