Room @ForeignKey 在更新到 2.4.0 时,此注释不适用于具有支持字段的目标成员 属性
Room @ForeignKey This annotation is not applicable to target member property with backing field when updating to 2.4.0
在使用@ForeignKey 注释的字段上更新到 Room 2.4.0-rc01 时遇到问题。此版本在其定义中添加了一个空的@Target,使其无法定位属性。
@Entity
class Foo {
@PrimaryKey
@ColumnInfo
var id: String = ""
@ForeignKey(entity = Foo::class, parentColumns = ["bar_id"], childColumns = ["bar"])
@ColumnInfo
var bar: String? = null
}
@Entity
class Bar {
@PrimaryKey
@ColumnInfo
var bar_id: String = ""
}
我在 @ForeignKey 注释处出现以下错误:此注释不适用于目标 'member property with backing field'
我发现@Target 为空的注解只能放在其他注解中
所以解决方案是将@ForeignKey 移动到@Entity 中,如下所示:
@Entity(foreignKeys = [ForeignKey(entity = Bar::class, parentColumns = ["bar_id"], childColumns = ["bar"])])
class Foo {
@PrimaryKey
@ColumnInfo
var id: String = ""
@ColumnInfo
var bar: String? = null
}
@Entity
class Bar {
@PrimaryKey
@ColumnInfo
var bar_id: String = ""
}
请注意,以前甚至无法对字段进行注释。所以根本没有创建外键。
在使用@ForeignKey 注释的字段上更新到 Room 2.4.0-rc01 时遇到问题。此版本在其定义中添加了一个空的@Target,使其无法定位属性。
@Entity
class Foo {
@PrimaryKey
@ColumnInfo
var id: String = ""
@ForeignKey(entity = Foo::class, parentColumns = ["bar_id"], childColumns = ["bar"])
@ColumnInfo
var bar: String? = null
}
@Entity
class Bar {
@PrimaryKey
@ColumnInfo
var bar_id: String = ""
}
我在 @ForeignKey 注释处出现以下错误:此注释不适用于目标 'member property with backing field'
我发现@Target 为空的注解只能放在其他注解中
所以解决方案是将@ForeignKey 移动到@Entity 中,如下所示:
@Entity(foreignKeys = [ForeignKey(entity = Bar::class, parentColumns = ["bar_id"], childColumns = ["bar"])])
class Foo {
@PrimaryKey
@ColumnInfo
var id: String = ""
@ColumnInfo
var bar: String? = null
}
@Entity
class Bar {
@PrimaryKey
@ColumnInfo
var bar_id: String = ""
}
请注意,以前甚至无法对字段进行注释。所以根本没有创建外键。