當我搜索這個錯誤時,發現了很多結果,但所有的答案都是在資料庫(SQL Server)級別。但是,我在使用 JPA 查詢(帶訂單子句的簡單計數查詢)和 SQL Server 資料庫時遇到此錯誤。此代碼適用于 MySQL 資料庫。
代碼:
FilterBuilder builder = new FilterBuilder("FROM RuleChangeLog A ");
{
builder.startWhere();
builder.checkAndAdd1(filters[0], "and A.action LIKE ?", filters[0] );
builder.checkAndAdd1(filters[1], "and A.ruleName like ?", filters[1] );
builder.checkAndAdd1(filters[2], "and A.updatedBy like ?", filters[2] );
}
TypedQuery<Long> countQuery = em.createQuery("select count(A) " builder.getJPQL(), Long.class);
builder.setParameters(countQuery);
運行countQuery.getSingleResult()方法時出現以下錯誤。
引起:com.microsoft.sqlserver.jdbc.SQLServerException:列“rule_change_log.update_time”在 ORDER BY 子句中無效,因為它不包含在聚合函式或 GROUP BY 子句中。
以下是相同的轉換后的資料庫查詢:
select count(rulechange0_.id) as col_0_0_ from rule_change_log rulechange0_ where 1=1 order by rulechange0_.update_time DESC
uj5u.com熱心網友回復:
正如@Dale K 所建議的,洗掉查詢中的 order 子句后,它起作用了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/347726.html
標籤:sql-server 休眠 弹簧数据-jpa 知乎 jpa-2.0
