扩展Kotlin数据类以便与JPA一起使用?

Kotlin有一个Data类,可以自动实现equalshashcode ,但是这些在JPA上下文中仍然不能自动使用 。

为了弥补这一点,我想知道如何扩展Data类型,以便分配一个“业务密钥”或id属性是finalnon updatable并用作为业务密钥的UUID初始化,并有equals()hashcode()方法使用该属性的实现。

我大致在想这样的事情:

 jpa class User(id: JpaId, val name: String, val age: Int) jpa class User(bid: JpaBid, val name: String, val age: Int) 

而不是像这样使用Data类:

 data class User(bid: long, val name: String, val age: Int) 

我们正在使用一种新的类jpa 。 我们还有两个新的类型, JpaIdJpaBid ,用来确定id属性是否应该是UUID或商业密钥,如ISBN号,sku等

如果使用JpaId类型,则会自动生成密钥。 如果使用JpaBid则应该在构造函数中提供该键。 这将确保只要JPA实体被构建,它就可以被唯一标识。 思考? 这是在Kotlin中做的非常直接的事情,还是我们需要在JVM烤架(Kotlin的新品牌)中起床?