首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >spring jpa SpEL in countQuery,使用#{#entityName} -意外字符:'#‘

spring jpa SpEL in countQuery,使用#{#entityName} -意外字符:'#‘
EN

Stack Overflow用户
提问于 2017-08-08 23:13:34
回答 1查看 2.3K关注 0票数 1

更新,因为问题被问到

这一问题由公共关系确定:

https://github.com/spring-projects/spring-data-jpa/pull/283

描述

我已经配置了spring-boot +spring jpa项目。我的存储库还有下一个自定义查询:

代码语言:javascript
运行
复制
@Repository
public interface MyEntityRepository extends JpaRepository<MyEntity, String>, QueryDslPredicateExecutor<MyEntity> {
  ...
  @Query(
      value = " SELECT me.name FROM #{#entityName} me ",
      countQuery = " SELECT COUNT(me.name) FROM MyEntity me "
  )
  Page<String> findAllMyEntityNames(final Predicate predicate, final Pageable pageable);
  ...
}

一切都很顺利。但是对我来说,更好的方法是在任何地方使用#{#entityName} -在查询和countQuery中,即:

代码语言:javascript
运行
复制
countQuery = " SELECT COUNT(me.name) FROM #{#entityName} me " 

所以,我的问题是:

  • 与countQuery有什么不同?
  • 为什么我们不能在这里也使用相同的SpEL呢?
  • 问spring团队:将来添加这个功能是可行的吗?

ps:如果我在countQuery中使用countQuery,则会出现下一个异常:

代码语言:javascript
运行
复制
...
Caused by: java.lang.IllegalArgumentException: org.hibernate.QueryException: unexpected char: '#' [ SELECT COUNT(me.name) FROM #{#entityName} me ]
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1679) ~[hibernate-entitymanager-5.0.11.Final.jar:5.0.11.Final]
...
Caused by: org.hibernate.QueryException: unexpected char: '#' [ SELECT COUNT(me.name) FROM #{#entityName} me ]
...

谢谢

你好,马克西姆

EN

回答 1

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45579346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档