Kotlin Mapstruct не отображает логические свойстваJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Kotlin Mapstruct не отображает логические свойства

Сообщение Anonymous »

У меня есть очень простой вариант использования Mapstruct, сопоставляющий DTO с другим объектом.

Код: Выделить всё

abstract class BaseDTO(
open val id: UUID,
open val protected: Boolean,
... other properties
)

data class ExtendedDTO(
override val id: UUID,
override val protected: Boolean,

) : BaseDTO(
id,
protected,
...
)

abstract class BaseResult(
open val id: UUID,
open val protected: Boolean,
...
)

data class ExtendedResult(
override val id: UUID,
override val protected: Boolean,
) : BaseResult(
id,
protected,
...
)
И следующий картограф:

Код: Выделить всё

@Mapper(
config = MappingConfig::class,
unmappedSourcePolicy = ReportingPolicy.IGNORE,
)
abstract class MyMapper {
companion object {
val INSTANCE: MyMapper = Mappers.getMapper(MyMapper::class.java)
}

abstract fun map(dto: ExtendedDTO): ExtendedResult

fun map(dto: BaseDTO): BaseResult {
return when (dto) {
is ExtendedDTO -> map(dto)
...
}
}
}
Все свойства сопоставляются правильно, за исключением логического поля protected. Когда я пытаюсь указать сопоставление вручную с помощью @Mapping(target = "protected" source = "dto.protected)", он жалуется на

Код: Выделить всё

Property "protected" has no write accessor in ExtendedResult.
Если я ничего не укажу явно, сборка завершится с ошибкой

Код: Выделить всё

Unmapped target property: "p2_1843213783"
Кто-нибудь знает, как правильно обрабатывать логические свойства в Mapstruct в этом случае?

Подробнее здесь: https://stackoverflow.com/questions/792 ... properties
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»