如何将@Transient与缺少支持字段的Micronaut Data和Kotlin属性一起使用?

时间:2019-11-23 17:33:37

标签: kotlin micronaut-data

我正在从Spring Data JDBC和Java迁移到Micronaut Data JDBC和Kotlin,并且在没有后备字段的Kotlin属性上遇到@Transient遇到麻烦。

示例代码:

interface Foo {
    // @JvmDefault here had no effect on my problem
    // @Transient does not compile here
    val doodah: Boolean
        get() = /* some default implementation */
}

// Bar implements Foo for reasons unrelated to this question, part of an internal "microframework"
@Entity
@Introspected
@Table(name = "bar")
data class Bar(@Id var id: Long /* , more properties */) : Foo {
}

@JdbcRepository(dialect = POSTGRES)
interface BarRepository : CrudRepository<Bar, Long> {
}

运行时,我收到了Postgres的投诉:

org.postgresql.util.PSQLException: ERROR: column child_record_.doodah does not exist

嗯,看起来Micronaut Data想要对继承的属性进行序列化/反序列化。所以我在属性上尝试了@Transient,编译失败并显示:

This annotation is not applicable to target 'member property without backing field or delegate'

有关如何解决此问题的建议?

1 个答案:

答案 0 :(得分:1)

interface Foo {
    @get:javax.persistence.Transient
    val doodah: Boolean
        get() = /* some default implementation */
}