如何在Hibernate查询中加入SQL视图?

时间:2011-07-28 16:43:41

标签: hibernate

我创建了一个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查询中使用这样的视图是否合理?

1 个答案:

答案 0 :(得分:1)

这里唯一的选择是:

  1. 在Hibernate中映射您的f_view as(最可能是不可变的)实体 - 然后您可以将它包含在HQL查询中。

  2. 将您的查询编写为SQL,并将其结果映射到您的(托管或非托管)实体。 Chapter 18的Hibernate参考文档记录了这里的所有可能性。