1
我已經創建了一個計算兩個表格行的函數的SQL視圖。我想使用視圖來限制hibernate查詢的輸出,但我不確定最好的方法。如何在Hibernate查詢中加入SQL視圖?
視圖封裝存儲功能:
CREATE FUNCTION f(ax, ay, bx, by) AS ... ;
CREATE VIEW f_view AS
SELECT a.id a_id, b.id b_id, f(a.x, a.y, b.x, b.y) f FROM thing a, thing b;
現在我想寫類似這樣的SQL查詢Hibernate查詢:
SELECT Thing t1
INNER JOIN Thing t2 ...
INNER JOIN ...
INNER JOIN f_view v ON v.a_id = t1.id AND v.b_id = t2.id
WHERE t2.id = ? AND ... AND v.f < ?
是否合理在一個Hibernate使用了這樣一個觀點查詢?
謝謝。我很害怕這種情況。在寫這個問題之前,我採取了選項2,這個方法很有效,但它很醜。我考慮過映射視圖,但不知道如何處理視圖行的id。 –
@kevin在視圖中,「a_id' /'b_id'組合是唯一的嗎?如果是這樣,您可以將其映射爲複合標識符。如果沒有,你也可以在那裏拋出'f',或者只要'f_view'是不可變的,永遠不會被Hibernate直接檢索(例如,只在連接中使用),你實際上可以使用重複的ID。 – ChssPly76
是的,它是獨一無二的。我也考慮過這種方法。我會試一試。 –