Spring Data Rest参数化投影

时间:2015-10-21 15:11:33

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

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

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

function phptemplate_webform_form_50 ($form) {
 $form['submitted']['First Name']['#id'] = 'edit-submitted-first-name';
 $form['submitted']['Last Name']['#id'] = 'edit-submitted-last-name';
 $form['submitted']['Fluent in']['#id'] = 'edit-submitted-fluency';
 return _phptemplate_callback('webform_form_50', array('form' => $form));
}

然后我们有一个预测:

@Entity
public class Person {

  ...
  private String firstName;
  private String lastName;

  ...
}

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

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

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

}

其中 $ {id} 实际上是用于从数据库中检索此Person对象的ID。

1 个答案:

答案 0 :(得分:2)

更改您的预测:

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

我相信它应该有所帮助。