4

テーブルからランダムな行を取得するために使用する MySQL クエリがあります。クエリは次のとおりです。

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

ここで、このクエリをHibernateに変更する必要があります。少しグーグルで調べましたが、答えが見つかりませんでした。誰かがこれについて助けてくれますか?

4

2 に答える 2

2

ランダム関数は基礎となる DB ごとに異なり、SQL92 の標準部分ではありません。

使用している特定のデータベース タイプの SQLDialect を実装する必要がある場合。

例えば:

クラス PostgresSQLDialect は org.hibernate.dialect.PostgreSQLDialect を拡張します {
    PostgresSQLDialect() {
        素晴らしい()
        registerFunction( "rand", new NoArgSQLFunction("random", Hibernate.DOUBLE) );
    }
}

次に、構成でその方言を定義する必要があります

休止状態 {
    方言='com.mycompany.sql.PostgresSQLDialect'
}
于 2008-12-02T14:51:07.103 に答える
1

この投稿によると、それを行うことができます:

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

それが機能するかどうかはわかりませんが(特にランダム部分の場合)、試してみることができます:)

于 2008-12-02T12:54:12.160 に答える