1
두 테이블 행의 함수를 계산하는 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
예, 고유합니다. 나는 그 접근법도 고려했다. 나는 그것을 시도 할 것이다. –