1
2つのテーブル行の関数を計算するSQLビューを作成しました。私はハイバネートクエリの出力を制限するためにビューを使用したいが、それを行うための最善の方法はわからない。HibernateクエリでSQLビューにどのように参加できますか?
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 < ?
は、それが合理的な休止状態で、このようなビューを使用することです:
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クエリに似休止クエリを書きたい:
ビューが保存された機能をカプセル化クエリ?ここ
ありがとうございます。私はそれが事実であることを恐れていた。私は質問を書く前にオプション2を取ったが、それはうまくいくが、それは醜い。私はビューをマッピングすることを検討しましたが、ビュー行のIDについて何をすべきか分かりません。 –
@kevin 'a_id' /' b_id'の組み合わせはあなたのビュー内で一意ですか?その場合は、コンポジット識別子としてマップすることができます。そうでなければ 'f_view'が不変で、Hibernateによって直接検索されない(例えば結合でのみ使われる)限り、実際には重複したIDで取り除くことができる限り、そこに' f'を入れても構いません。 – ChssPly76
はい、ユニークです。私はそのアプローチも考えました。私はそれを試してみましょう。 –