3
我正在使用Hibernate 3與MySQL數據庫(我試過用Hibernate 4沒有更多的成功)。我已經實現了一個每個具體類繼承策略(union-subclass)。休眠繼承性能
它使得除多態查詢之外的工作成爲可能。 Hibernate會在其中的「在那裏」的條款是在高級別查詢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
這會導致非常糟糕的表現作爲整個混凝土表內容加載,而因爲p鍵是一個屬性抽象父母,子句中可以定義「where」子句。
因此,目標將是獲得休眠產生這種查詢:
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.
不知道有關hibernate的問題,但爲什麼不使用存儲過程,其中讓我們說有輸入參數primKey和limit;甚至一個視圖(優化視圖 - 索引等) - 視圖將保存union Croncrete1和Concrete2表,並將從mView中選擇[cols],其中primKey = value order by [cols] limit?,?。 –