如何将本机SQL查询转换为HQL

如何将本机SQL查询转换为HQL,第1张

如何将本机SQL查询转换为HQL

HQL在where语句中支持子查询,因此where中的子查询不会引起麻烦。

我认为您的from语句中的子查询没有必要,您应该能够更改查询而不再拥有它。

删除查询的分页部分可能会有所帮助。该分页应通过在HQL查询对象上调用

.SetFirstResult(indexCalculatedFromYourPage)
和来完成
.SetMaxResults(yourPageSize)

当然,您需要在实体上映射所有必需的列。您的大部分查询看起来已经与我兼容。
如果也映射了相关实体,则可以通过避免显式地编写相关表的连接条件来简化where子查询。

注意:您的查询看起来像一个“多条件”搜索查询。与编写一个不考虑所有参数的查询(并支持它们为空/未指定)相比,动态编写查询以忽略未提供的参数通常更容易(顺便说一句对于性能而言更好)。为此,最好使用诸如queryover或linq-to-
nhibernate之
类的查询api 。

编辑:我现在意识到您已经将问题标记为nhibernate(.Net)和hibernate(Java)。我链接的两个API用于NHibernate。如果您使用的是Java,则有hibernate-
criteria
api,也许还有一些我不知道的API。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5566096.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-14
下一篇2022-12-14

发表评论

登录后才能评论

评论列表(0条)

    保存