Seb*_* A. 5 spring hibernate jpa auditing kotlin
我想在 kotlin 数据类中使用 @CreatedDate 注释。所有属性都应初始化为不可变 (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?,
...
Run Code Online (Sandbox Code Playgroud)
kotlin编译器有没有特殊的插件来解决这个问题,或者可以在同一个数据类中使用val和var吗?
使用val
andvar
是完全可以接受的。
考虑一个示例,您只希望在实例化对象时能够设置属性,但不希望用户稍后能够更改这些属性。
\n\n这就像允许在构造函数中进行赋值,然后只为该属性提供 getter 方法。
\n\n如果您显示实际的字节码(将 kotlin 转换为等效的 java),您就会看到这一点。您的属性没有设置方法val
。
Intellij 的说明:
\n\nDisplay bytecode: Tools -> Kotlin -> Show Kotlin Bytecode\nOr just: cmd + shift + A (Mac) / ctrl + shift + A (Windows) and type \xe2\x80\x9cKotlin Bytecode\xe2\x80\x9d\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
2800 次 |
最近记录: |