1

Hibernate を使用して実行できる、この SQL に相当するものを取得する必要があります。@などの特殊文字により、そのままでは機能しません。

SELECT place from (select @curRow := @curRow + 1 AS place, time, id FROM `testing`.`competitor` JOIN (SELECT @curRow := 0) r order by time) competitorList where competitorList.id=4;

私のアプリケーションは、競技会の結果を管理しています。上記のクエリは、特定の競合他社を選択しています。これは、彼/彼女の全体的な時間に基づいた場所です。

簡単にするために、COMPETITOR テーブル構造 (関連するフィールドのみ) のみをリストします。私の実際のクエリにはいくつかの結合が含まれていますが、それらは質問には関係ありません:

CREATE TABLE competitor {
    id INT,
    name VARCHAR,
    time INT
}

競技者はまだ時間順に並べられていないため、ID をランクとして使用することはできません。同様に、2 人の競技者が同じ総合タイムを持つことも可能です。

これをHibernateで機能させる方法はありますか?

4

2 に答える 2

0

スキーマがないとわかりにくいですが、次のようなものを使用できる場合があります

SELECT COUNT(*) FROM testing ts 
WHERE ts.score < $obj.score

$ を使用して、ライブ オブジェクトを参照するために必要な Hibernate 表記を表します。

于 2012-08-14T18:23:00.630 に答える
0

これを行う方法が見つからなかったため、位置の計算方法を変更する必要がありました。現在、上位の結果を取得して、SQL クエリではなく Java でラダーを作成しています。

于 2013-02-12T02:51:24.483 に答える