我需要在使用Room Persistence Library的查询中使用SQL VIEW。
使用Commonsware在这里给出的答案,我已经能够运行原始SQL语句,在数据库创建时创建视图。
Room.databaseBuilder(context, MyDatabase.class, DB_NAME)
.addCallback(new RoomDatabase.Callback() {
@Override
public void onCreate(@NonNull SupportSQLiteDatabase db) {
super.onCreate(db);
db.execSQL("CREATE VIEW view_name " +
"AS SELECT [...] "
);
}
})
.build();
这个VIEW实际上是在SQLite数据库上创建的,并且运行良好,但是我无法在我的Dao的@Query中引用它,因为我会得到一个编译时错误:
错误:(100,48)错误:查询存在问题:[SQLITE_ERROR] SQL错误或缺少数据库(没有这样的表:view_name)
有什么想法让Room知道我的视图或忽略此错误吗?
RoomDatabase.Callback
的onOpen()
方法中)。即使这样能行,也只是对你现有解决方案的另一种修改,这开始让人感到可怕了 :-( - CommonsWare