JPQL @Query - 无法准备语句异常

Posted

技术标签:

【中文标题】JPQL @Query - 无法准备语句异常【英文标题】:JPQL @Query - Could not prepare statement exception 【发布时间】:2021-11-07 13:59:35 【问题描述】:

当我尝试执行这个 JPQL 时:

@Query("SELECT COUNT(v) FROM Vote v JOIN FETCH Restaurant WHERE v.restaurant.id=?1" )
Integer getVoteCountByRestaurantId(int id);

我有这个例外

nested exception is org.hibernate.exception.SQLGrammarException: could not prepare statement"

我试着改成

@Query("SELECT COUNT(v.id) FROM Vote v JOIN FETCH Restaurant WHERE v.restaurant.id=?1" )

但例外是一样的,我做错了什么?

【问题讨论】:

你在使用什么底层rdbms? @Mureinik H2 数据库 【参考方案1】:

试试这个:

@Query("SELECT COUNT(v.id) FROM Vote v JOIN v.restaurant r WHERE r.id=?1" )

【讨论】:

Exception mow is: query specified join fetching, but the owner of the fetched association is not present in the select list ;( 你能用join代替join fetch吗?

以上是关于JPQL @Query - 无法准备语句异常的主要内容,如果未能解决你的问题,请参考以下文章

无法准备陈述;嵌套异常是 org.hibernate.exception.JDBCConnectionException:无法准备语句

无法准备陈述;嵌套异常是 org.hibernate.exception.GenericJDBCException:无法准备语句

使用 JPQL 加入标准

19 JPQL

JPQL 语句返回布尔值

带有 HashMap 的准备好的语句,异常