【问题标题】:SQl Query to Hibernate QuerySQL 查询到休眠查询
【发布时间】:2010-09-24 22:23:07
【问题描述】:

我有一个 MySQL 查询,用于从表中检索随机行。查询是:

SELECT * FROM QUESTION WHERE TESTID=1 ORDER BY RAND() LIMIT 10;

现在我需要将此查询更改为 Hibernate。做了一些谷歌搜索,但找不到答案。有人可以提供帮助吗?

【问题讨论】:

    标签: sql hibernate grails jdbc groovy


    【解决方案1】:

    根据这个post,你可以这样做:

    String query = "from QUESTION order by newid()";
    Query q = session.createQuery(query);
    q.setMaxResults(10);
    

    不确定它是否会起作用(尤其是随机部分),但你可以试试 :)

    【讨论】:

      【解决方案2】:

      随机函数在每个底层数据库之间是不同的,不是 SQL92 的标准部分。

      鉴于您需要为正在使用的给定数据库类型实现 SQLDialect。

      例如:

      类 PostgresSQLDialect 扩展 org.hibernate.dialect.PostgreSQLDialect { PostgresSQLDialect() { 极好的() registerFunction("rand", new NoArgSQLFunction("random", Hibernate.DOUBLE)); } }

      然后你需要在配置中定义那个方言

      休眠{ dialect='com.mycompany.sql.PostgresSQLDialect' }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-05
        • 2012-01-26
        相关资源
        最近更新 更多