Преобразование класса домена Kotlin в подкласс - PullRequest
0 голосов
/ 27 мая 2019

У меня есть класс домена

@Entity
@Table(name = "user")
open class User(
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    open var id: Long = 0L,

    @Column(nullable = false)
    var name: String? = null)

И у меня есть подкласс этого класса домена, к которому я хотел бы добавить аннотацию JsonIgnore:

open class UserFiltered(
    @Id
    @JsonIgnore
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    override var id: Long = 0L
): User()

Но когда я пытаюсьприведение пользователя к UserFiltered:

return ResponseModel<UserFiltered>(true, userModified as UserFiltered)

Я получаю следующую ошибку:

java.lang.ClassCastException: com.example.platform.database.domain.User не может быть приведенcom.example.platform.model.UserFiltered на com.example.platform.controller.UserController.modifyUser (UserController.kt: 71) ~ [classes /: na]

Есть ли способдобиться этого в Kotlin, или мне придется выполнить полное приведение, настраивая каждый параметр для пользователя?

1 Ответ

0 голосов
/ 27 мая 2019

Мне пришлось изменить дочерний класс до следующей формы:

open class UserFiltered(
    @Id
    @JsonIgnore
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    override var id: Long = 0L
): User(){
    constructor(user: User): this(user.id)
}

И создание экземпляра UserFiltered

return ResponseModel<UserFiltered>(true, UserFiltered(userModified))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...