Java SpEL:将列表元素投影到映射
我有一个SpringDataMongoDB管理的实体,它在其子集合中存储元素列表。为了通过SpringMVC只返回该实体的一个子集,我使用它来定制数据对象上的视图 可视化我的设置的简化示例:Java SpEL:将列表元素投影到映射,java,spring-el,Java,Spring El,我有一个SpringDataMongoDB管理的实体,它在其子集合中存储元素列表。为了通过SpringMVC只返回该实体的一个子集,我使用它来定制数据对象上的视图 可视化我的设置的简化示例: @Getter @Setter @Document(collection = "test") public class CompanyEntity { @Id private String id; private List<Employee> employees;
@Getter
@Setter
@Document(collection = "test")
public class CompanyEntity {
@Id
private String id;
private List<Employee> employees;
...
}
视图是一个简单的界面,如下所示:
public interface CompanyView {
String getId();
@Value("#{target.employees.![name]}")
List<String> getEmployeeNames();
}
公共接口公司视图{
字符串getId();
@值(“#{target.employees.![name]}”)
列出getEmployeeNames();
}
虽然我可以通过{target.employees.![name]}
直接将员工的姓名投射到列表中,但我不知何故在尝试使用employee.id
作为键,使用employee.name
作为值,用映射替换当前代码时迷失了方向
这是可能的,还是我必须写一个答案?好的,我想我已经找到了一个我满意的解决方案 为了创建以下内容:
@Value("#{target...}")
Map<String, String> getEmployees();
在CompanyView
中,现在的定义是这样的:
@Value("#{target.employees}")
List<EmployeeView> getEmployees();
@Value(“#{target.employees}”)
列出getEmployees();
这只返回返回数据中有限的员工子集。好的,我想我找到了一个满意的解决方案 为了创建以下内容:
@Value("#{target...}")
Map<String, String> getEmployees();
在CompanyView
中,现在的定义是这样的:
@Value("#{target.employees}")
List<EmployeeView> getEmployees();
@Value(“#{target.employees}”)
列出getEmployees();
这只返回返回的数据中有限的员工子集