gpt4 book ai didi

java - HSQLDB:原因:使用 MAX,但不使用 Group By,并获取 java.sql.SQLSyntaxErrorException:表达式不在聚合或 GROUP BY 列中:

转载 作者:行者123 更新时间:2023-12-02 02:44:17 26 4
gpt4 key购买 nike

我收到 JPQL 语法错误消息,并且我不确定如何修复该语句以获得我需要的内容。我正在使用 HSQLDB 2.4.0 和 Hibernate 5.2.7。

对于给定日期,我尝试查找具有最大 sudokuPuzzleID 的“SudokuPuzzleModel”。因此,以下 Java/JPQL 代码:

static final private String queryByDateString = 
"SELECT p FROM SudokuPuzzleModel p " +
"WHERE p.sudokuPuzzleID = (" +
"SELECT MAX(p.sudokuPuzzleID) FROM SudokuPuzzleModel pp " +
"WHERE pp.publicationDate LIKE :publicationDate" +
")";

static protected String getQueryByDate() { return queryByDateString; }

static public SudokuPuzzleModel getPuzzleByDate(LocalDate publicationDate) {
EntityManager entityManager = RootModel.getEntityManagerFactory().createEntityManager();
SudokuPuzzleModel results = null;

String queryString = getQueryByDate();
String jpaParameter = "publicationDate";
Query query = entityManager.createQuery(queryString).setParameter(jpaParameter, publicationDate);
results = (SudokuPuzzleModel) query.getSingleResult();

entityManager.close();
return results;
}

我没有使用GROUP BY子句。那么关于如何修改 JPQL 语句以获得我想要的结果有什么建议吗?

我所追求的是 SudokuPuzzleModel,具有最大的 sudokuPuzzleID,它是在传入的日期发布的。

仅供引用:最初的错误消息是“错误 org.hibernate.engine.jdbc.spi.SqlExceptionHelper - 尝试在后台线程中获取缓存的PreparedStatement 时出现问题。”但是,我相信这是由语法错误引起的。

最佳答案

看起来你的sql中有错字。看起来您需要 MAX(pp.sudokuPuzzleID) 而不是 MAX(p.sudokuPuzzleID)?

关于java - HSQLDB:原因:使用 MAX,但不使用 Group By,并获取 java.sql.SQLSyntaxErrorException:表达式不在聚合或 GROUP BY 列中:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44897407/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com