目前我有一个实体,其类型为class,并使用@Embedded和prefixed进行注释 .
class Foo{
...
@Embedded(prefix = "bar0_")
Bar bar0;
@Embedded(prefix = "bar1_")
Bar bar1;
...
}
在这个注释了@Embedded的字段的类中,我有一个@Relation注释字段,表示 List<T>
类型字段的一对多关系 .
class Bar{
...
String baz;
@Relation(parentColumn = "baz", ...)
List<SomeType> someTypeList
String barSpecificFields1;
String barSpecificFields2;
...
}
由于 Bar
类的两个实例都带有前缀,因此会抛出一个编译错误,表示找不到列 baz
(只有 bar0_baz
或 bar1_baz
可用,并且一次只有一个) . 使用此数据结构,我看到如何解决此问题的唯一方法是使用 parentColumn
类型创建2个单独的列表 . 这似乎很浪费,因为其中一个关系实体将在每个实例中未使用但仍保存到DB,我认为这不是正确的方法 . 另一种可能的方法是以某种方式将前缀值注入 parentColumn
,但我不确定这是否甚至可能 .
我是否遇到了Room的限制,因为我错误地构建了数据,还有其他更有效的方法来使其工作吗?