扩展Kotlin数据类以便与JPA一起使用?
Kotlin有一个Data
类,可以自动实现equals
和hashcode
,但是这些在JPA上下文中仍然不能自动使用 。
为了弥补这一点,我想知道如何扩展Data
类型,以便分配一个“业务密钥”或id
属性是final
和non 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
。 我们还有两个新的类型, JpaId
和JpaBid
,用来确定id属性是否应该是UUID
或商业密钥,如ISBN号,sku等
如果使用JpaId
类型,则会自动生成密钥。 如果使用JpaBid
则应该在构造函数中提供该键。 这将确保只要JPA实体被构建,它就可以被唯一标识。 思考? 这是在Kotlin中做的非常直接的事情,还是我们需要在JVM烤架(Kotlin的新品牌)中起床?