首页 > 解决方案 > Spring Data Jpa 自定义存储库未找到任何属性

问题描述

我正在尝试创建一个存储库,该存储库的方法不符合通常JpaRepository@Query注释。

我创建了一个自定义存储库接口:

public interface CustomVoteRepository {

  List<VoteCountResult> countVotesForSession();
}

和实施:

@Repository
public class CustomVoteRepositoryImp implements CustomVoteRepository {

  private JdbcTemplate jdbcTemplate;

  public CustomVoteRepositoryImp(JdbcTemplate jdbcTemplate) {
    this.jdbcTemplate = jdbcTemplate;
  }

  @Override
  public List<VoteCountResult> countVotesForSession() {
    return jdbcTemplate.query("SELECT video_id, COUNT(votes.id) FROM votes WHERE session_id=2 GROUP BY video_id",
        new CustomRowMapper());
  }
}

但是,这给了我这个错误:

No property countVotesForSession found for type Vote!

我不明白为什么它试图在 Vote 类上映射一个属性。我知道它是为“自动生成”方法名称执行此操作的,但这应该是自定义方法名称。

我遇到过这篇文章:https ://www.mkyong.com/spring-data/spring-data-add-custom-method-to-repository/它解释了我在做什么,但它正在尝试映射自定义存储库的模型属性。

我确定我错过了一些愚蠢的事情。

谢谢!

编辑:

这是 VoteCountResult dto:

@Data
@AllArgsConstructor
public class VoteCountResult {

  private String count;
  private String title;
  private String url;
}

标签: springspring-data-jpaspring-data

解决方案


如果您将自定义方法名称更改为votesForSessionCount怎么办?我认为这样你就不会面临方法名称冲突。


推荐阅读