15

ormliteは、この3つの継承戦略をサポートしていますか?

  • クラス階層ごとのテーブル
  • サブクラスごとのテーブル
  • 具体的なクラスごとのテーブル

このディスカッションはORMLiteユーザーグループで見つかりましたが、私の質問に答えられるかどうかはわかりません。

特に「クラス階層ごとのテーブル」を使いたい。それらがormliteフレームワークからサポートされていない場合、私は1つのクラスを作成し、継承を忘れますが、継承を使用したいと思います。

4

1 に答える 1

10

ORMLiteはこれらを自動的にサポートしません。リンク先のスレッドは非常に具体的であるため、実際に読んだかどうかはわかりません。

必要なものは次のとおりです。スーパークラスとしてクラスAがあり、直接サブクラスBとCがあり、クラスAのすべてのレコード/オブジェクトに対してクエリを実行する場合、クラスA、B、およびCが戻った。

ええ、ORMLiteはこれを行いません、そして現在私はそれをサポートする予定はありません。これを達成する方法を間違えない限り、これの複雑さは、私が「ライト」と言ったものの外にあります。Hibernateがそのような構造をサポートする方法は、外部キー、複数のテーブル、およびマジック結合を使用することです。

その質問は、ORMLiteを使用して継承を実装する方法についていくつかのアイデアを提供します。

1)クラスAと関連するテーブルを持つことができるので、抽象化することはできません。次に、Aをサブクラス化するBとCを持ち、すべてのAsフィールドをそれぞれ別々のテーブルに持つことができます。次に、A用の特別なDAOを作成し、BとCを照会して、それらをAの結果に追加することができます。

2)それを行う別の方法は、クラスBとCをサブクラスではなく、代わりにAへの外部オブジェクトを持つことです。次に、すべてのAsにクエリを実行でき、それらの一部はBのA部分、一部はCのA部分になります。 Aだけの場合もあります。次に、BとCにクエリを実行し、A DAOを使用して、キャストできないAのフィールドを更新して取得することもできます。Aには、A、B、またはCのいずれであるかを示すある種の列挙型を含めることもできます。列挙型を調べてBまたはC daoにクエリを実行する場合は、getSubClassObject()と言うことができる魔法を実行することもできます。 Aオブジェクトの正しい外部キーに関連付けられたオブジェクト。

于 2012-04-17T13:57:47.280 に答える