Room@Dao编译跳转报错解决-没有用到的Dao会这样

Posted 怪兽N

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Room@Dao编译跳转报错解决-没有用到的Dao会这样相关的知识,希望对你有一定的参考价值。

Room@Dao编译跳转报错解决-没有用到的Dao会这样

编译提示

> Task :user_lib:compileDebugJavaWithJavac
����: Current JDK version 1.8.0_221-b11 has a bug (https://bugs.openjdk.java.net/browse/JDK-8007720) that prevents Room from being incremental. Consider using JDK 11+ or the embedded JDK shipped with android Studio 3.5+.
E:\\AndroidProject\\lqbsProjects\\lqbs_android\\user_lib\\src\\main\\java\\com\\lqbs\\gyso\\data\\database\\LoginInfoDao.java:19: ����: The query returns some columns [id, uuid, ip, location, terminal_type, time] which are not used by com.lqbs.gyso.data.http.LoginInfo.

You can use @ColumnInfo annotation on the fields to specify the mapping. 
 
You can annotate the method with @RewriteQueriesToDropUnusedColumns to direct Room to rewrite your query to avoid fetching unused columns. com.lqbs.gyso.data.http.LoginInfo has some fields [name, email, passWord, headUrl, token] which are not returned by the query.

 If they are not supposed to be read from the result, you can mark them with @Ignore annotation.
 
 You can suppress this warning by annotating the method with @SuppressWarnings(RoomWarnings.CURSOR_MISMATCH). Columns returned by the query: id, uuid, ip, location, terminal_type, time, state. Fields in com.lqbs.gyso.data.http.LoginInfo: name, email, passWord, headUrl, state, token.
    LiveData<List<LoginInfo>> getLoginInfoByUUID(String uuid);

原因

项目中没有使用这个Dao。

解决

按提示提示说有如下解决办法:
1 这是1.8.0_221-b11的bug,可以升级jdk到11
2 使用@ColumnInfo 指定使用的列属性
3 使用@RewriteQueriesToDropUnusedColumns
4 添加@SuppressWarnings(RoomWarnings.CURSOR_MISMATCH)到方法前

试过方法4 有效

@Dao
public interface LoginInfoDao {
    @SuppressWarnings(RoomWarnings.CURSOR_MISMATCH)
    @Query("SELECT * FROM login_info_tb WHERE uuid=:uuid")
    LiveData<List<LoginInfo>> getLoginInfoByUUID(String uuid);
}

以上是关于Room@Dao编译跳转报错解决-没有用到的Dao会这样的主要内容,如果未能解决你的问题,请参考以下文章

vue-router重写push方法,解决相同路径跳转报错

Vue.js中跳转报错 地址栏改变 页面不改变

为啥servlet跳转报错404

Android Room 数据库 DAO 调试日志

kotlin 升级到 1.6.0 后如何在 Room Dao 中使用挂起修饰符?

Android Room Dao:按 CASE 排序不起作用