如何在mapstruct中未加载lazy字段时跳过调用getter方法以避免LazyInitializationException?
How to skip calling the getter method when the lazy field was not loaded in mapstruct to avoid LazyInitializationException?
当惰性字段未加载到将 JPA 实体映射到 DTO 的 mapstruct
映射器中时,如何跳过调用 getter 方法?
我正在使用 JPA
EntityGraph 为 method1
加载所需的子实体,但是 method2
我正在使用不同的 EntityGraph,我不想为每种情况创建不同的映射器。
有没有办法为这两种方法创建一个映射器并忽略延迟加载的 属性?
你可以有两种方法制作相同的映射,一种方法忽略未初始化的字段
abstract Personne toDtoV1(PersonneModel model);
@Mapping(target = "nom", ignore = true)
abstract Personne toDtoV2(PersonneModel model);
或者如果你只需要一个方法,你创建一个映射,其中包含所有可以在忽略中延迟加载的字段,并在映射后的方法中检查是否加载了关系,然后你自己制作映射
@Mapping(target = "nom", ignore = true)
abstract Personne toDtoV2(PersonneModel model);
@AfterMapping
void afterpersonneModel(PersonneModel dto, @MappingTarget Personne mode){
//check if relation is loaded
///and make the mapping
}
当惰性字段未加载到将 JPA 实体映射到 DTO 的 mapstruct
映射器中时,如何跳过调用 getter 方法?
我正在使用 JPA
EntityGraph 为 method1
加载所需的子实体,但是 method2
我正在使用不同的 EntityGraph,我不想为每种情况创建不同的映射器。
有没有办法为这两种方法创建一个映射器并忽略延迟加载的 属性?
你可以有两种方法制作相同的映射,一种方法忽略未初始化的字段
abstract Personne toDtoV1(PersonneModel model);
@Mapping(target = "nom", ignore = true)
abstract Personne toDtoV2(PersonneModel model);
或者如果你只需要一个方法,你创建一个映射,其中包含所有可以在忽略中延迟加载的字段,并在映射后的方法中检查是否加载了关系,然后你自己制作映射
@Mapping(target = "nom", ignore = true)
abstract Personne toDtoV2(PersonneModel model);
@AfterMapping
void afterpersonneModel(PersonneModel dto, @MappingTarget Personne mode){
//check if relation is loaded
///and make the mapping
}