我创建了一个SQL视图,用于计算两个表行的函数。我想使用视图来限制hibernate查询的输出,但我不确定最好的方法。
视图封装了存储的函数:
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查询中使用这样的视图是否合理?
答案 0 :(得分:1)
这里唯一的选择是:
在Hibernate中映射您的f_view
as(最可能是不可变的)实体 - 然后您可以将它包含在HQL查询中。
将您的查询编写为SQL,并将其结果映射到您的(托管或非托管)实体。 Chapter 18的Hibernate参考文档记录了这里的所有可能性。