为什么 Room 会强制外键为 NOTNULL迁移没有正确处理

问题描述

我有两个简单的课程供学习:

Z

由于相册类是一个新类,我不得不运行迁移:

Tables array
[T1,T2,T3]
Columns array
[
    [C1,C2],// T1 columns
    [C1,// T2 columns
    [C1,C2]    // T3 columns
]

QUERY:-
select T1.C1,T2.C1,T3.C1 from T1
inner join T2 ON T2.C2=T1.C2;
inner join T3 ON T3.C2=T1.C2

select first column of every table in the array 
if they have a match in the second column

[assuming every table has 2 columns]

问题是,当我运行迁移时,我收到了 @Entity(tableName = "Artist") public class Artist{ @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "id") @NotNull private int id; @ColumnInfo(name = "artistName") @NotNull private String artistName; /*getters and setters*/ } @Entity(tableName = "Album",indices = {@Index(value = {"artistId"})},foreignKeys = {@ForeignKey(entity=Artist.class,parentColumns="id",childColumns="artistId",onDelete = SET_DEFAULT)}) public class Album{ @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "id") @NotNull private int id; @ColumnInfo(name = "albumName") @NotNull private String albumName; @ColumnInfo(name = "artistId") private int artistId; /*getters and setters*/ } ,因为 room 期望艺术家 ID 字段为 NOTNULL,所以当我添加 NOTNULL 注释时,迁移运行没有问题,但我的问题是为什么房间首先要求外键非空?外键一般可以为空,那么为什么空间强迫我成为 NOTNULL? 如果我有一些不存在的随机艺术家创建的专辑,则 NOTNULL 注释将不起作用。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)