在下面的例子中,我有一个单独的域层和一个单独的持久层。我使用mapstruct进行Map,当从域Map到实体或从实体Map到域时,会出现stackoverflow,因为在->无限循环场景中总是调用双向引用。如何在此场景中使用mapstruct?
class User {
private UserProfile userProfile;
}
class UserProfile {
private User user;
}
@Entity
class UserEntity {
@OneToOne
@PrimaryKeyJoinColumn
private UserProfileEntity userProfile;
}
@Entity
class UserProfileEntity {
@OneToOne(mappedBy = "userProfile")
private UserEntity userEntity;
}
用于Map的类非常基本
@Mapper
interface UserMapper {
UserEntity mapToEntity(User user);
User mapToDomain(UserEntity userEntity);
}
1条答案
按热度按时间tv6aics11#
查看mapstructMapwith cycles示例。
上下文注解的文档中还演示了问题的解决方案。
示例
一个完整的例子:https://github.com/jannis-baratheon/stackoverflow--mapstruct-mapping-graph-with-cycles.
参考
Map器:
哪里
CycleAvoidingMappingContext
跟踪已Map的对象并重用它们,以避免堆栈溢出:Map器用法(Map单个对象):
也可以在Map器上添加默认方法: