テーブルからランダムな行を取得するために使用する MySQL クエリがあります。クエリは次のとおりです。
SELECT * FROM QUESTION WHERE TESTID=1 ORDER BY RAND() LIMIT 10;
ここで、このクエリをHibernateに変更する必要があります。少しグーグルで調べましたが、答えが見つかりませんでした。誰かがこれについて助けてくれますか?
ランダム関数は基礎となる DB ごとに異なり、SQL92 の標準部分ではありません。
使用している特定のデータベース タイプの SQLDialect を実装する必要がある場合。
例えば:
クラス PostgresSQLDialect は org.hibernate.dialect.PostgreSQLDialect を拡張します { PostgresSQLDialect() { 素晴らしい() registerFunction( "rand", new NoArgSQLFunction("random", Hibernate.DOUBLE) ); } }
次に、構成でその方言を定義する必要があります
休止状態 { 方言='com.mycompany.sql.PostgresSQLDialect' }
この投稿によると、それを行うことができます:
String query = "from QUESTION order by newid()";
Query q = session.createQuery(query);
q.setMaxResults(10);
それが機能するかどうかはわかりませんが(特にランダム部分の場合)、試してみることができます:)