使用 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?
使用 val
和 var
是完全可以接受的。
想一个例子,您只希望在实例化对象时能够设置属性,但不希望用户以后能够更改这些属性。
这就像允许在构造函数中进行赋值,然后只为该属性提供一个 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”
我想在 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?
使用 val
和 var
是完全可以接受的。
想一个例子,您只希望在实例化对象时能够设置属性,但不希望用户以后能够更改这些属性。
这就像允许在构造函数中进行赋值,然后只为该属性提供一个 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”