我有一个域名类(class)
@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 cannot be cast to com.example.platform.model.UserFiltered at com.example.platform.controller.UserController.modifyUser(UserController.kt:71) ~[classes/:na]
有没有一种方法可以在Kotlin中实现这一目标,或者我将必须进行完整的转换,在User上设置每个参数?
最佳答案
我不得不将子类修改为以下形式:
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))
关于inheritance - Kotlin域类转换为子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56329653/