Kotlin数据类inheritance+复制方法

我从个人经验和这个讨论中了解到,当一个data classinheritance自另一个inheritance了类的字段的类不包含在数据类的copy函数中。

我感兴趣的是解决这个问题的选项。

具体来说,我有一个JPA @MappedSuperClass为我的JPA实体,这是data class ES。 在超类中,我设置了实体ID,至少到目前为止,我总是希望以相同的方式进行操作。 还有一些其他的事情我也想做,比如设置一个创建日期,最后更新日期等。

我到目前为止考虑的选项:

  1. 将ID,创建日期等复制粘贴到每个实体中。 优点:这很容易和复制方法的作品。 缺点:失败DRY,你不能处理所有使用共享超类的实体。 (但可以为此创建一个接口。)

  2. 重写超类的值,并将它们传递给超类。

您仍然需要将覆盖值复制粘贴到每个实体中,但至少您不必复制注释。

 @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 ) 
  1. ??? 我什至不能想到第三个选项是有效的。 还有另一种方法吗? 使ID为var,并且每次都创建一个自定义的复制方法? 这听起来很丑。