Spring Data Rest:为扩展Revision Repository的Repository公开新的端点

时间:2014-09-19 02:38:56

标签: java spring spring-data spring-data-rest hibernate-envers

我想为我的存储库公开新的端点,这也扩展了RevisionRepository。

@RepositoryRestResource(collectionResourceRel = "persons", itemResourceRel = "person", path = "persons")
public interface PersonRepository extends PagingAndSortingRepository<PersonEntity, Long>, RevisionRepository<PersonEntity, Long, Integer> {

    Revision<Integer, PersonEntity> findLastChangeRevision(@Param("id") Long id);

    Revisions<Integer, PersonEntity> findRevisions(@Param("id") Long id);

    Page<Revision<Integer, PersonEntity>> findRevisions(@Param("id") Long id, Pageable pageable);

    PersonEntity findByName(@Param("name") String name);
}

我现在的问题是,这些新方法没有公开为网址(findLastChangeRevisionfindRevisions),只有findByName位于搜索网址下。我目前对于实际的网址形式并不是特别关注,只要它有效。

我现在知道的唯一选择是

  1. 分隔修订存储库
  2. 创建一个映射到&#34; /&#34;的新控制器,以替换Spring Data Rest创建的控制器,并手动添加所有存储库链接。我的一个问题是我的链接将被硬编码(与链接到控制器时不同),路径将是相对的 - 不一定是坏的,但会使一切都不一致。
  3. 添加指向&#34; /&#34;映射到修订存储库
  4. 我对上面的选项有很多保留意见。我不知道该怎么办。

1 个答案:

答案 0 :(得分:0)

您的方法名称出错了。在Repository类中查找方法应该是 findByxxxxxx 而不是 findxxxxx

这似乎是您的代码的问题。

@RepositoryRestResource(collectionResourceRel = "persons", itemResourceRel = "person", path = "persons")
public interface PersonRepository extends PagingAndSortingRepository<PersonEntity, Long>, RevisionRepository<PersonEntity, Long, Integer> {

    Revision<Integer, PersonEntity> findByLastChangeRevision(@Param("id") Long id);

    Revisions<Integer, PersonEntity> findByRevisions(@Param("id") Long id);

    Page<Revision<Integer, PersonEntity>> findByRevisions(@Param("id") Long id, Pageable pageable);

    PersonEntity findByName(@Param("name") String name);
}