目前我有一个实体,其类型为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_bazbar1_baz 可用,并且一次只有一个) . 使用此数据结构,我看到如何解决此问题的唯一方法是使用 parentColumn 类型创建2个单独的列表 . 这似乎很浪费,因为其中一个关系实体将在每个实例中未使用但仍保存到DB,我认为这不是正确的方法 . 另一种可能的方法是以某种方式将前缀值注入 parentColumn ,但我不确定这是否甚至可能 .

我是否遇到了Room的限制,因为我错误地构建了数据,还有其他更有效的方法来使其工作吗?