Mapstruct @Mapping(expression= "..." ) in kotlin



是否可以在@Mapping注释中表达Kotlin表达式?

(简化的)问题如下:

我有这个数据类:

data class Data (
val myClass: MyClass
)

:

data class DataDto (
myString: String
)
fun String.toMyClass() = ...

目前我想做这样的事情:

@Mapper
interface RefDataMapper {
@Mapping(expression = "kotlin(myString?.toMyClass())", target = "myClass")
fun toDomain(dataDto: DataDto) : Data
}

目前似乎表达式只能在Java中编写,所以上面的解决方案不起作用。我想做的事有可能做到吗?

注意:我不能使用装饰器,因为在Data类中,这个属性被设置为val,所以我只能在实例化期间设置这个属性。

MapStruct不支持Kotlin表达式,因为MapStruct目前只能够生成Java代码。因此,即使您的映射器是在Kotlin中定义的,映射器的实现也将用Java编写。

您必须调整表达式以使用java(...)格式。

相关内容

  • 没有找到相关文章

最新更新