我有一个MySQL查询语句,用于从表中检索随机行。查询语句如下:
SELECT * FROM QUESTION WHERE TESTID=1 ORDER BY RAND() LIMIT 10;
现在我需要将这个查询改为Hibernate。我查了一下,但没找到答案。有人能帮忙吗?
创建PostgresSQLDialect类,继承org.hibernate.dialect.PostgreSQLDialect
class PostgresSQLDialect extends org.hibernate.dialect.PostgreSQLDialect { PostgresSQLDialect() { super() registerFunction( "rand", new NoArgSQLFunction("random", Hibernate.DOUBLE) ); } }
然后您需要在配置中定义该方言
hibernate { dialect='com.mycompany.sql.PostgresSQLDialect' }
String query = "from QUESTION order by newid()";
Query q = session.createQuery(query);
q.setMaxResults(10);
不确定它是否有效(特别是随机部分),但你可以试试 :)