Kotlin数据类inheritance+复制方法
我从个人经验和这个讨论中了解到,当一个data class
inheritance自另一个inheritance了类的字段的类不包含在数据类的copy
函数中。
我感兴趣的是解决这个问题的选项。
具体来说,我有一个JPA @MappedSuperClass
为我的JPA实体,这是data class
ES。 在超类中,我设置了实体ID,至少到目前为止,我总是希望以相同的方式进行操作。 还有一些其他的事情我也想做,比如设置一个创建日期,最后更新日期等。
我到目前为止考虑的选项:
-
将ID,创建日期等复制粘贴到每个实体中。 优点:这很容易和复制方法的作品。 缺点:失败DRY,你不能处理所有使用共享超类的实体。 (但可以为此创建一个接口。)
-
重写超类的值,并将它们传递给超类。
您仍然需要将覆盖值复制粘贴到每个实体中,但至少您不必复制注释。
@Entity data class Comment( @Lob comment: String, override val id: Long = -1 ) : BaseEntity(id) @MappedSuperclass abstract class BaseEntity( @Id @GeneratedValue(strategy = GenerationType.AUTO) open val id: Long = -1 )
- ??? 我什至不能想到第三个选项是有效的。 还有另一种方法吗? 使ID为var,并且每次都创建一个自定义的复制方法? 这听起来很丑。