当前位置: 首页 > 知识库问答 >
问题:

为Spring Data Mongo Rest存储库获取自定义行为时遇到困难

颜新
2023-03-14

我引用了Spring文档中有关向单个存储库添加自定义行为的内容。

关于应用程序配置,我们有以下内容:

@EnableMongoRepositories(basePackages = { "com.test" }, repositoryImplementationPostfix = "Impl")

为了说明这一点,我把一些测试类放在一起。我的自定义界面如下所示:

public interface TestRepositoryCustom {
TestEntity getStuff();}
public interface TestRepository extends MongoRepository<TestEntity, String>, TestRepositoryCustom {

TestEntity findByName(@Param("name") String name);}
public class TestRepositoryImpl implements TestRepositoryCustom {

@Override
public TestEntity getStuff(){
    System.out.println("!!!!TESTOK!!!");
    return new TestEntity();
}}
...
Caused by: org.springframework.data.mapping.PropertyReferenceException: No property getStuff found for type TestEntity!
...

如有任何投入,将不胜感激

共有1个答案

狄宾实
2023-03-14

似乎您不能为rest存储库这样做,根据答案rest存储库没有公开。

如果希望数据看起来像来自Mongo存储库的数据,可以将数据作为PagedResource返回,并且返回的数据应该看起来相同。您可以看到一个返回分页资源的示例。

由于我们有自己的WebMVCConfig覆盖了configureMessageConverter部分,所以它没有正确地返回PagedResources,所以为了解决这个问题,我必须将halJacksonConverter添加到列表中,并使RestController方法生成HAL+JSON。在我们的MVCConfig中,我添加了:

@Autowired
private TypeConstrainedMappingJackson2HttpMessageConverter halJacksonHttpMessageConverter;

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    List<MediaType> halMediaTypes = new ArrayList<MediaType>();
    halMediaTypes.add(RestMediaTypes.HAL_JSON);
    halJacksonHttpMessageConverter.setSupportedMediaTypes(halMediaTypes);
    converters.add(halJacksonHttpMessageConverter);
    converters.add(new DelimitedFileMessageConverter());
}
 类似资料:
  • 在我的项目中有几个实体具有相同的属性(对于示例'name'),所以,有可能创建一个存储库,其中使用自定义的select(实体)?因此,我从JpaRepository扩展了我的存储库,我扩展了MyCustomJpaRepository,MyCustomJpaRepository也扩展了JpaRepository,使其能够从JpaRepository授予基本功能? TKS

  • 我正在尝试在tkinter自定义标题栏。 使用以下代码: null 我希望能够添加一个最小化按钮。我尝试用 作为命令创建一个类似于关闭按钮的按钮,但它不能与 一起工作。 null 此外,移动有一个很大的问题,当你尝试移动窗口时,它会移动窗口,使其左上角位于光标所在的位置。这是非常恼人的,也不是Windows的典型行为。 如果有人知道如何解决这些问题,我们将不胜感激。 编辑:我现在已经成功地制作了一

  • 我正在尝试使用android Studio从tess-two项目中构建两只眼睛。我为tess-two和eyes-two做了ndk-build android...ant发布的东西,导入了eyes-two,配置了NDK.dir路径等等,但是,在构建时,我得到了以下错误消息:

  • 我有一个单独的类用于Items,还有一个Inventory_MP类用于GUI。我在这里的任务是移除用户键入的项,并让它在界面中显示它已经被移除。出于某种原因,我无法移除它。错误表示: 线程“awt-eventqueue-0”java.lang.NumberFormatException中的异常:对于输入字符串:“2”在java.lang.NumberFormatException.forInput

  • 我发现对于减少样板非常有用,但它似乎给工作带来了麻烦。我现在试图用自定义的基类存储库扩展,而在启动时,Spring在正确实例化存储库方面遇到了问题。 我已经尝试了几个关于这个主题的变体,但是没有运气让事情成功地连线起来。我在Spring的问题跟踪器https://jira.spring.io/browse/datajpa-674上遇到了一个类似的问题,但没有关于修复的解释,只是对代码进行了重构,使

  • 我最终不得不在文件。定义通常非常繁琐: 注意上面gradle提供了一种定义常用maven存储库的好方法(即)。我想在插件或父gradle脚本中找到一种方法,在函数中或静态地定义存储库,然后在块中调用它:。 我缺乏groovy方面的知识,因此我不太了解解析groovy源代码所需的知识,我正在寻找一种很好的方法来实现这一点。我该怎么做? 我知道在父级gradle文件中,我可以使用或。我不想将这些mav