如何在发送实体之前修改实体中的列表?
说明:
我有一个Building实体,其中包含Flat列表:
@Entity
@Table(name = "building")
public class Building {
...
@OneToMany(mappedBy = "building", cascade = CascadeType.ALL)
private Set<Flat> flats;
}
我还有一个User对象,其角色为:经理或商业。经理可以看到所有单位,但是商业只能看到他创建的单位。
现在我需要一个端点来查找建筑物:
@RestController
@RequestMapping("/building")
public class BuildingController {
@GetMapping("/{id}")
public Building getBuildingById(@PathVariable(value = "id") Long id) {
return buildingService.findById(id);
}
}
但是在这种情况下,即使用户是商业用户,也会发送此建筑物拥有的所有单位。 如何修改单位列表以仅发送好人列表?
答案 0 :(得分:0)
我发现的解决方案是使用数据传输对象(DTO)。从数据库中获取实体时,我将创建一个DTO,并在发送前仅用所需的信息填充它。这是BuildingDto.java的一个示例:
public class BuildingDto implements Serializable {
...
private List<FlatDto> flats;
private List<FlatUnauthorizedDto> flatsUnauthorized;
// Constructors + getters + setters
}