从对象中删除属性

Jan*_*ake 4 java hibernate spring-boot

我得到了一个从 db 调用返回的列表。

List<employee> list = empolyeeRepository.findByEmployeeId(id);
Run Code Online (Sandbox Code Playgroud)

列表包含员工 pojo 类对象。我想删除一个属性,让我们在从休息电话返回时说“员工银行账户号”。

@RequestMapping(value = "/employeeInformation/{id}",
     method = RequestMethod.GET,
     produces = MediaType.APPLICATION_JSON_VALUE)
@Timed
public List<Employee> getEmployeeInformation(@PathVariable("id") String id) throws Exception {
            return empolyeeRepository.findByEmployeeId(id);
        }
Run Code Online (Sandbox Code Playgroud)

是否有任何注释或良好做法可以做到这一点?

Aet*_*ros 5

正如上面的评论中提到的,您不能在运行时删除已编译类的字段。假设您必须从生成的 json 中排除某些字段,我会看到两个选项:

  1. 创建一个包含要在结果 json 中出现的字段的类,将所需的值从原始对象复制到新创建的对象。这种方法称为视图模型,它允许您修饰某些对象的数据,从而隐藏敏感数据不被暴露。
  2. 根据您的序列化程序的实现,可能会有注释来排除字段。@JsonIgnore如果您使用的是 Jackson(spring boot 中的默认值),则可能会放在 getter 方法上。第二种方法需要的代码要少得多,但第一种方法更灵活。