オブジェクト Object に複数のパラメータがあり、パラメータの名前と数が不明であるとします。この場合、Hibernate の動作により適したデータ テーブルをどのように設計すべきかを知りたいです。解決策(マスターの不満を聞きたい)の前に1つ作成しました:
合計2つのテーブルが使用されます。1つはタブテーブル、もう1つはtabmetaテーブルで、tabmetaテーブルのtidは参照されています。外部キーを作成するためのタブの ID (実際には、データベースに外部キーを作成したくないので、この関係をプログラムまたは DAO 層に実装したいと考えています)。
##対応するエンティティ クラスを作成します (InteliJ IDEA のリバース エンジニアリングを使用してテーブルから直接生成):
リーリー
生成時のパラメータ:
ただし、これにより 2 つのエンティティ クラスが生成されます。1 つは TabEntity で、もう 1 つは TabValueEntity です。強迫性障害は不快感を表現します。 2 つのテーブルは、2 つのオブジェクト間の 1 対多の関係ではなく、エンティティを記述します。ここで、TabEntity で (Hash)Map 型の変数メタを準備できるかどうかを尋ねたいのですが、これは、これらの不確実なデータを格納するために特別に使用されますパラメーターを使用するため、エンティティ クラスは 1 つだけになります。しかし、この場合、データはどのようにデータベースに格納し直すべきでしょうか?
この方法で生成されたエンティティ クラスにアクセスしたい場合 可変パラメーターの 1 つが使用されている場合実装するには: TabDao.getEntity(...).getTabmetasById().get('somekey').getMetaValue()
が必要ですが、これら 2 つのテーブルを 1 つのエンティティのデータとして扱うには、次のように実装する必要があります:
TabDao.getEntity(...).getMeta('somekey')かどうかはわかりませんマスターはそれを持っています この点については提案はありません....
また、マスターに、IDEA の関係作成のダイアログ ボックスで各パラメーターがどのような影響を与えるのかを聞きたいです。
私はかなり混乱しています。神様がアドバイスをくれることを願っています!
滿天的星座2017-05-17 10:08:59
質問と回答の時間です....
上記のメソッドを実装し、LazyLoad も実装したい場合、IDEA の自動生成は基本的に役に立ちません...生成された関数には、非 If 関数の作成は含まれません。オブジェクト間の関係を確立する必要がある場合、マッピング ファイルを自分で変更することしかできません。まずタブ テーブルのエンティティ クラスを生成し、次にマップ タイプのオブジェクトをタブのエンティティ クラスに追加します (特定のマッピングについては別のページを参照してください)。 type)、テーブルのフィールド データ型)、対応するゲッター関数とセッター関数を生成します。
次に、マップ ファイルがあります: