如何在hibernate中使用用户定义函数完成的是sql(并且仍然有分页)
我需要运行一个使用我在 Oracle SQL(10g) 数据库上创建的函数的查询。
我已经看到 Hibernate 支持一些聚合函数(avg、sum、min、max 和某些形式的计数),但我想要我自己的函数,所以这不起作用。
我还看到可以使用 SQLQuery 对象进行直接 SQL 注入。但在这里我失去了分页,我真的需要这个。
有人知道该怎么做吗? 预先感谢!
I need to run a query that uses a function I created on the Oracle SQL(10g) database.
I've seen that Hibernate supports some aggregate functions (avg, sum, min, max and some forms of count) but I want my own function so this doesn't work.
I have also seen that I can use SQLQuery object for direct sql injection. But here I loose pagination and I really need this.
Anyone knows how to do this?
Thanks in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
对于 HQL 查询,您需要根据当前使用的 Oracle 方言 (Oracle10gDialect) 创建自己的方言,并将您的函数添加到该方言中。
对于 Criteria 查询,您可以定义自己的 Criterion 实现并在查询中使用它。此 Criterion 负责 SQL 表达式的生成。查看 Hibernate 源代码以查找与您要创建的标准类似的现有标准实现的示例。
For HQL queries, you need to create your own dialect based on the Oracle dialect you're currently using (Oracle10gDialect), and add your function to this dialect.
For Criteria queries, you may define your own Criterion implementation and use it in your query. This Criterion is responsible of the generation of the SQL expression. Look at the Hibernate sources to find an example of an existing criterion implementation similar to the one you want to create.