2015-10-21 2 views
1

Есть ли способ иметь параметризованное выражение SpEL внутри проецирования в Spring Data Rest?Параметр параметрирования данных Spring Data

Рассмотрим пример из документов Spring Data Rest docs (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} на самом деле и идентификатор используется для получения этого Person объект из БД.

ответ

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

Я считаю, что это должно помогает.

Смежные вопросы