簡體   English   中英

為什么我的Play Framework(1.2.4)計數查詢失敗?

[英]Why does my Play Framework (1.2.4) count query fail?

我有一個涉及標題和描述的簡單模型。 它擴展了play.db.jpa.Model

以下搜索方法可以完美運行

public static SearchResults search(String search, Integer page) {
    String likeSearch = "%" + search + "%";
    long count = find("title like ? OR description like ? order by " +
            "title ASC", likeSearch, likeSearch).fetch().size();
    List<Must> items = find("title like ? OR description like ? order by " +
            "title ASC", likeSearch, likeSearch).fetch(page, 20);
    return new SearchResults(items, count);
}

但是當我調整如下時

    long count = count("title like ? OR description like ? order by " +
            "title ASC", likeSearch, likeSearch);

我懂了

發生PersistenceException:org.hibernate.exception.SQLGrammarException:無法執行查詢

錯誤〜錯誤:“ must0_.title”列必須出現在GROUP BY子句中或在聚合函數中使用

當查詢完全沒有變化時,為什么錯誤要求我使用聚合函數?

這是因為在第一個查詢中,將返回所有記錄,然后將其計入結果列表。

在第二個查詢中,計數是在數據庫中完成的,因此您的sql必須正確形成。 我認為訂單是引起您所描述的錯誤的原因,請嘗試將其刪除。 您正在嘗試對不屬於退貨的列進行訂購(計算退貨數量而不是列)。

如果需要查看生成的sql,可以在application.conf中設置jpa.debugSQL = true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM