【问题标题】:Get entity projection by type and name按类型和名称获取实体投影
【发布时间】:2020-01-26 07:06:53
【问题描述】:

我需要使用自定义休息控制器,但我想传递投影以用作参数,就像它与弹簧数据休息一样。

现在,当我想使用特定投影时,我知道如何使用 projectionFactory 创建投影:

projectionFactory.createProjection(IPaymentMethodConfig.class, pm)

有没有办法使用投影定义中的名称和类型来检索投影?例如,这里是投影定义:

@Projection(name = "list", types = {PaymentMethod.class})

我想创建与上面相同的投影,但改用如下代码:

projectionFactory.createProjection(projName, PaymentMethod.class, myObject)

【问题讨论】:

    标签: spring-boot spring-data-rest


    【解决方案1】:

    您应该可以使用PersistentEntityProjector 执行此操作。然后只需使用Object project(Object source) 方法。应该可以通过getProjectionConfiguration() 方法从RepositoryRestConfiguration 检索投影定义。

    【讨论】:

      【解决方案2】:

      Daniel已经总结过了,我来展示一下相关代码。

      在你的类中注入一个 RepositoryRestConfiguration 类型的 bean:

      import org.springframework.data.rest.core.config.RepositoryRestConfiguration;
      
      ...
      
      private final RepositoryRestConfiguration repositoryRestConfiguration;
      
      ...
      

      然后使用所需的源类型和投影名称调用getProjectionConfiguration().getProjectionType(...)

      private Class<?> getProjectionType(Class<?> sourceType, String projection) {
          return repositoryRestConfiguration.getProjectionConfiguration().getProjectionType(sourceType, projection);
      }
      

      因此在您的示例中:

      Class<?> projectionType = getProjectionType(PaymentMethod.class, projName);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-29
        相关资源
        最近更新 更多