使用 Kotlin 进行 JPA 审计

JPA Auditing with Kotlin

我想在 kotlin 数据中使用 @CreatedDate 注解 class。所有属性都应初始化为不可变 (val)。问题是,实现无法处理不可变变量。不会设置正确的日期并且变量为空。使用可变变量,实现能够设置日期。

示例:

    @Entity
    @EntityListeners(AuditingEntityListener::class)
    data class Test(

    @Id
    @GeneratedValue(generator = "UUID")
    @GenericGenerator(name = "UUID", strategy = "org.hibernate.id.UUIDGenerator")
    @Column(name = "id", updatable = false, nullable = false)
    val id: UUID? = null,

    val text: String,
    @CreatedDate
    @Column(updatable = false, nullable = false)
    var createdAt: LocalDateTime?,
    ...

kotlin编译器有没有专门的插件解决这个问题,或者在同一个数据中使用val和var可以吗class?

使用 valvar 是完全可以接受的。

想一个例子,您只希望在实例化对象时能够设置属性,但不希望用户以后能够更改这些属性。

这就像允许在构造函数中进行赋值,然后只为该属性提供一个 getter 方法。

如果您显示实际的字节码(将 kotlin 转换为 java 等价物),您将完全看到。您的 val 属性没有 setter 方法。

Intellij 说明:

Display bytecode: Tools -> Kotlin -> Show Kotlin Bytecode
Or just: cmd + shift + A (Mac) / ctrl + shift + A (Windows) and type “Kotlin Bytecode”