如何让@JsonView与MapStruct一起使用

时间:2018-12-02 15:54:52

标签: java spring mapstruct json-view

因此,我将所有控制器迁移到使用DTO对象的方式,就像以前使用持久性对象的方式一样。

为此,我选择使用MapStruct

我的问题是我似乎已无法将@JsonView应用于此响应,因为现在应用视图时的响应为{}(空)。

我的问题是,这是否有可能结合MapStruct和Jackson序列化,还是需要为我当前使用的每个视图创建DTO类?

我的班级结构如下:

@Entity
public class User {
    @JsonView(View.Summary.class)
    private Long id;
    @JsonView(View.Summary.class)
    private String name;
    // Etc
}

public class UserDto {
    @JsonView(View.Summary.class)
    private Long id;
    @JsonView(View.Summary.class)
    private String name;
    // Etc
}

@Mapper
public interface UserMapper {
    User toUser(UserDto userDto);
    UserDto toUserDto(User user);
}

public class UserController() {
    @JsonView(View.Summary.class)
    @RequestMapping(path = "/users", method = RequestMethod.GET, produces = "application/json")
    public Page<UserDto> userPage(@RequestParam MultiValueMap<String, String> filters, Pageable page) {
        return service.findAllUser(filters, page).map(mapper::toUserDto);
    }

    @JsonView(View.Summary.class)
    @RequestMapping(path = "/users/{id}", method = RequestMethod.GET, produces = "application/json")
    public UserDto singleUser(@PathVariable("id") Long id) {
        return mapper.toUserDto(service.findById(id));
    }
}

0 个答案:

没有答案