有没有办法在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。
答案 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);
我相信它应该有所帮助。