MySQLデータベースでHibernate 3を使用しています(Hibernate 4で試しましたが、成功しませんでした)。具体的なクラスごとのテーブル継承戦略 (ユニオン サブクラス) を実装しました。
多態的なクエリを除いて仕事をします。Hibernate は、「where」句が高レベルのクエリにある UNION ベースのクエリを生成します。
select primKey, param1, param2 from (
select primKey, param1, param2 from Concrete1
union
select primKey, param1, param2 from Concrete2
)
where primKey == <value>
order by param1
limit 100
これにより、具象テーブルのコンテンツ全体がロードされるため、パフォーマンスが非常に低下しますが、pkey は抽象的な親の属性であるため、サブセレクトで「where」句を定義できます。
したがって、目的は、Hibernate がこの種のクエリを生成するようにすることです。
select primKey, param1, param2 from (
select primKey, param1, param2 from Concrete1 where primKey == <value>
union
select primKey, param1, param2 from Concrete2 where primKey == <value>
)
order by param1
limit 100
このようにして、クエリは瞬時に実行されます。
この動作を変更するために Hibernate を構成する方法について何か考えはありますか?
ありがとう
Y.