Spring Data Rest:为扩展Revision Repository的Repository暴露新的端点

11

我想为我的代码库暴露新的端点,同时还要扩展 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);
}

目前我的问题是,这些新的方法没有作为URL公开(findLastChangeRevision, findRevisions),只有findByName在搜索URL下。我对实际的URL形式并不特别在意,只要它能工作。

我现在唯一知道的选择是:

  1. 分离修订存储库
  2. 创建一个映射到"/"的新控制器,以替换Spring Data Rest创建的控制器,并手动添加所有存储库链接。其中一个问题是我的链接将是硬编码的(与链接到控制器时不同),路径将是相对的--不一定是坏事,但会让所有东西变得不一致。
  3. 添加映射到修订存储库的"/"链接

对于我上述的选择,我有很多保留意见。我不确定该如何继续。


我也对这个问题的答案很感兴趣。我遇到了一个类似的问题,我想扩展CrudRepository的API。 - Eidan Spiegel
1个回答

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);
}

我认为问题在于“findLastChangeRevision”,“findRevisions”和“findRevisions”是由RevisionRepository公开的方法。 - Chad
你需要添加一个自定义控制器动作来公开Envers。 - Eddie Jaoude

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接