Spring Data Jpa自定义存储库找不到属性

时间:2018-07-26 15:53:13

标签: spring spring-data-jpa spring-data

我正在尝试创建一个存储库,该存储库的方法不适合带有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;
}

1 个答案:

答案 0 :(得分:0)

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