hibernate - 如何在 Hibernate 查询中加入 SQL View ?

标签 hibernate

我创建了一个 SQL View 来计算两个表行的函数。我想使用 View 来限制 hibernate 查询的输出,但我不确定最好的方法。

View 封装了一个存储函数:

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 查询中使用这样的 View 是否合理?

最佳答案

您唯一的选择是:

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

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

关于hibernate - 如何在 Hibernate 查询中加入 SQL View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6862548/

相关文章:

java - 为什么在多对一双向关系中,多方总是关系的拥有方?

Hibernate Validator - 在实体验证失败后设置默认值

java - 如何避免 hibernate 中的字符串成员?

java - 使用 Hibernate 向 MySQL 插入数据时出错

java - 如何在大型项目中安排/管理不同功能的方法

java - 触发器生成的自动刷新字段

java - Spring错误: No qualifying bean of type [org. hibernate.SessionFactory]发现依赖关系

sql - HQL 中的 IsNull 是什么?

java - Hibernate 过滤器实体,其中 oneToMany 关系包含一个对象

java - 无法使用 Hibernate 更新密码