【问题标题】:Spring Data Rest parametrized ProjectionSpring Data Rest 参数化投影
【发布时间】:2016-01-20 15:59:56
【问题描述】:

有没有办法在 Spring Data Rest 的 Projection 中使用参数化 SpEL 表达式?

让我们考虑一个来自 Spring Data Rest 文档 (link) 的示例。我们有 Person 实体:

@Entity
public class Person {

  ...
  private String firstName;
  private String lastName;

  ...
}

然后我们有一个投影:

@Projection(name = "virtual", types = { Person.class })
public interface VirtualProjection {

  @Value("#{target.firstName} #{target.lastName}") 
  String getFullName();

}

我想知道是否有办法将参数传递给该 SpEL 表达式,如下所示:

@Projection(name = "virtual", types = { Person.class })
public interface VirtualProjection {

  @Value("#{target.firstName} #{target.lastName} ${id}") 
  String getFullName();

}

${id} 实际在哪里,id 用于从数据库中检索此 Person 对象。

【问题讨论】:

    标签: spring-mvc spring-data-rest spring-el spring-hateoas


    【解决方案1】:

    像这样改变你的投影:

    @Value("#{target.firstName} #{target.lastName} #{target.id}") 
    String getFullName();
    

    也去 SpringDataRestConfig 并添加这个:

    @Bean
    public RepositoryRestConfigurer repositoryRestConfigurer() {
    
        return new RepositoryRestConfigurerAdapter() {
            @Override
            public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
                config.exposeIdsFor(
                     Person.class
                )
                .getProjectionConfiguration()
                    .addProjection(VirtualProjection.class);
    

    我相信它应该会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-27
      • 2016-03-23
      • 2018-04-18
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      • 2019-01-27
      • 1970-01-01
      相关资源
      最近更新 更多