Android使用@ForeignKey的onDelete=CASCADE不识别是否缺依赖
问题原因
这个报错和依赖缺失没有关系。CASCADE是ForeignKey注解内置的静态常量,直接裸写CASCADE时,IDE无法定位到该常量的定义,自然会提示无法识别。
解决方法
- 标准写法:直接通过
ForeignKey类名引用常量,不需要额外配置,修正后的代码如下:
@ForeignKey( entity = User.class, parentColumns = "id", childColumns = "user", onDelete = ForeignKey.CASCADE ) private int user;
- 简化写法:如果想直接使用
CASCADE省略类名前缀,在文件头部添加静态导包语句即可:
import static androidx.room.ForeignKey.CASCADE;
添加该导包后,你最初写的代码就可以正常被IDE识别、编译通过。
排查注意
如果按上述方式修改后依旧报错,检查ForeignKey的导包路径:必须引入androidx.room.ForeignKey,不要导入其他库下的同名类。只要你当前代码能正常使用@ForeignKey注解,就说明Room依赖已经配置完成,不需要额外添加依赖。
内容的提问来源于stack exchange,提问作者Martín Mato Búa
相关产品推荐
相关产品推荐

