我有一个实体Author,它有一个Books集合,该集合的属性为ExclusiveshedDate。
每个作者都有一本书,它们被Map成这样:
public class Author {
@Id
private Long id;
private String name;
@JsonBackReference
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "author")
private List<Book> listBook = new ArrayList<>();
// other fields
// getters and setters
书
public class Book {
@Id
private Long id;
@ManyToOne(fetch = FetchType.EAGER, optional = false)
private Author author;
private LocalDateTime publishedDateTime;
我想得到一个作者的身份证与最新的书作为一个DTO,即。
@Data
public AuthorNewestBookDto {
Long authorId;
String name;
Book newestBook;
1条答案
按热度按时间fxnxkyjh1#
MapStruct有多种工具可用于这种情况:
1.
Qualifier
我们可以提供Entity字段类型之间的自定义Map逻辑:
List<Book>
和DTO字段类型Book
:Iterable to non-iterable example(官方MapStruct-Example项目)。
2.
@Named
在这种情况下,我们不需要创建新的注解。命名注解文档
3.
@Mapping(.. expression=".." ..)
我们可以将业务逻辑存储为String。这种方法可能不是可读的,但很容易实现。表达式文档