其他映射中使用的 Mapstructs 抽象装饰器导致不明确的异常
Mapstructs abstract decorator used in other mapping results in ambiguous exception
我实现了一个装饰器来自定义实体的映射,假设是 MappingDecoratorA,它是一个抽象 class 并实现了 mapstructs 的 MapperA 接口。
public abstract class MappingDecoratorA implements MapperA {
...}
@Mapper
@DecoratedWith(MappingDecoratorA .class)
public interface MapperA {
在另一个映射中,我使用 MapperA,比方说 MappingB,它使用 cdi
@Mapper(uses = { MapperA.class},
componentModel = "cdi")
public interface MapperB{
Mapstructs 为 MapperA、MapperAImpl 和 MapperAImpl_ 生成两个实现。在我的情况下,注入机制不知道要使用哪个实现。结果是监听这两个实现的模棱两可的异常。
mapstruct 是否支持解决我的问题?
使用非默认 componentModel
时,您必须将其用于所有映射器。特别是如果你想重用它们。否则特定组件将不知道如何注入和创建映射器。
所以解决你的问题的方法是
@Mapper(componentModel = "cdi")
@DecoratedWith(MappingDecoratorA .class)
public interface MapperA {
}
我实现了一个装饰器来自定义实体的映射,假设是 MappingDecoratorA,它是一个抽象 class 并实现了 mapstructs 的 MapperA 接口。
public abstract class MappingDecoratorA implements MapperA {
...}
@Mapper
@DecoratedWith(MappingDecoratorA .class)
public interface MapperA {
在另一个映射中,我使用 MapperA,比方说 MappingB,它使用 cdi
@Mapper(uses = { MapperA.class},
componentModel = "cdi")
public interface MapperB{
Mapstructs 为 MapperA、MapperAImpl 和 MapperAImpl_ 生成两个实现。在我的情况下,注入机制不知道要使用哪个实现。结果是监听这两个实现的模棱两可的异常。
mapstruct 是否支持解决我的问题?
使用非默认 componentModel
时,您必须将其用于所有映射器。特别是如果你想重用它们。否则特定组件将不知道如何注入和创建映射器。
所以解决你的问题的方法是
@Mapper(componentModel = "cdi")
@DecoratedWith(MappingDecoratorA .class)
public interface MapperA {
}