JpaRepository 计数查询 QuerySyntaxException 实体未映射

Posted

技术标签:

【中文标题】JpaRepository 计数查询 QuerySyntaxException 实体未映射【英文标题】:JpaRepository count query QuerySyntaxException entity is not mapped 【发布时间】:2014-03-04 23:01:02 【问题描述】:
public interface EventoRepository extends JpaRepository<Evento, String>,     JpaSpecificationExecutor<Evento>   
public Evento findById(String id);
public List<Evento> findByStatus(String status, Pageable page);
public List<Evento> findById_User(Long id_user,Pageable page);

@Query("select count(e) FROM evento e WHERE e.status = ?1 AND e.id_user = ?2")
int countByStatus(String status, long id_user);

@Query("SELECT count(e) FROM evento e WHERE e.id_user= ?1")
int countAll(long id_user);

@Query("SELECT count(e) FROM evento e WHERE e.status IS NOT = ?1 AND e.id_user = ?2")
int countBySospesi(String status, long id_user);

我有这种情况,当我在 apache Tomcat 中启动我的项目时,它会生成异常: - 原因:java.lang.IllegalArgumentException:查询方法 public abstract java.lang.Long net.petrikainulainen.spring.social.signinmvc.user.repository.EventoRepository.countAll(long) 的验证失败! - 原因:java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: eventto 未映射 [SELECT count(e) FROM eventto e WHERE e.id_user= ?1] - 原因:org.hibernate.hql.internal.ast.QuerySyntaxException:evento 未映射 [SELECT count(e) FROM eventto e WHERE e.id_user= ?1]

谁能帮我找出这个异常的原因吗?

【问题讨论】:

【参考方案1】:

类名是Evento,而不是evento。所以你的查询应该是

select count(e) from Evento e ...

【讨论】:

【参考方案2】:
@Query("select count(e) FROM event e WHERE e.status = 1 AND e.id_user = 2")
int countByStatus(String status, long id_user);

【讨论】:

考虑在代码中添加一个小解释。所以不鼓励代码只回答。 虽然欢迎使用此代码 sn-p,并且可能会提供一些帮助,但它会是 greatly improved if it included an explanation of howwhy 这解决了问题。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人!请edit您的答案添加解释,并说明适用的限制和假设。

以上是关于JpaRepository 计数查询 QuerySyntaxException 实体未映射的主要内容,如果未能解决你的问题,请参考以下文章

查询验证失败:JpaRepository

JpaRepository 查询参数未动态更新

JpaRepository 不支持 DML 操作 [删除查询]

JpaRepository,如何查询 OneToMany 单向字段?

SpringDataJpa——JpaRepository查询功能(转)

来自 JpaRepository 接口的查询