0
    public List<T> findRange(int start, int duration) {
    Session hibernateSession = this.getSession();
    List<T> results = null;
    try {
        hibernateSession.beginTransaction();
        Query q =  hibernateSession.createQuery("From " + type.getSimpleName() );
        q.setFirstResult(start);
        q.setMaxResults(duration);
        results =  q.list();
        hibernateSession.getTransaction().commit();
    } finally {
        hibernateSession.close();
    }
    return results;
}

データベースから特定の行範囲を取得する上記のクエリがあります。アルファベット順または数値順ではなく、jobStatus 列で順序付けされたものを取得する必要がありますが、次の重要性があります。

case "Open":
    return 1;
    break;
case "On Hold":
    return 2;
    break;
case "Offer Extended":
    return 3;
    break;
case "Closed":
    return 4;
    break;

行 10 から 20 が必要な場合、この順序でテーブルから取得できるように、この休止状態のクエリを作り直すにはどうすればよいですか?

4

1 に答える 1

0

一般的に言えば、以下のものでうまくいくとは思いません。

Query q =  hibernateSession.createQuery("FROM " + type.getSimpleName() +
           " ORDER BY CASE WHEN jobStatus='Open'           THEN 1 " +
                          "WHEN jobStatus='On Hold'        THEN 2 " +
                          "WHEN jobStatus='Offer Extended' THEN 3 " +
                          "WHEN jobStatus='Closed'         THEN 4 "
                          "ELSE 5 END, id");
于 2013-07-23T20:42:40.127 に答える