Room IllegalArgumentException:无法将int转换为Element [英] Room IllegalArgumentException: intcannot be converted to an Element
问题描述
尝试编译项目时出现此错误:
I'm having this error when trying to compile the project:
错误:任务':app:compileDebugJavaWithJavac'的执行失败. java.lang.IllegalArgumentException:无法将int转换为Element
Error:Execution failed for task ':app:compileDebugJavaWithJavac'. java.lang.IllegalArgumentException: intcannot be converted to an Element
此警告:
警告:注释处理器"android.arch.persistence.room.RoomProcessor"支持的源版本"RELEASE_7"小于-source"1.8"
Warning:Supported source version 'RELEASE_7' from annotation processor 'android.arch.persistence.room.RoomProcessor' less than -source '1.8'
这些是与我的数据库相关的类:
These are my database related classes:
@Entity(tableName = "users")
public class SerializedUser {
@PrimaryKey(autoGenerate = true)
private int id;
@ColumnInfo(name = "first_name")
private String firstName;
@ColumnInfo(name = "last_name")
private String lastName;
@ColumnInfo(name = "username")
private String username;
public SerializedUser(int id, String firstName, String lastName, String username) {
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
this.username = username;
}
public int getId() {
return id;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public String getUsername() {
return username;
}
}
@android.arch.persistence.room.Database(entities = {SerializedUser.class}, version = 4)
public abstract class Database extends RoomDatabase {
public abstract UserDao userDao();
private static final String DATABASE_NAME = "weather";
// For Singleton instantiation
private static final Object LOCK = new Object();
private static volatile Database i;
public static Database init(Context context) {
if (i == null) {
synchronized (LOCK) {
if (i == null) {
i = Room.databaseBuilder(context.getApplicationContext(),
Database.class, Database.DATABASE_NAME)
.fallbackToDestructiveMigration().build();
}
}
}
return i;
}
public static boolean isInited(){
return i != null;
}
public static Database getInstance(){
if(i == null)
throw new NullPointerException("Database.getInstance called when Database not initialized");
return i;
}
}
@Dao
public abstract class UserDao {
Converters converters;
public void inject(Converters converters) {
this.converters = converters;
}
@Insert(onConflict = REPLACE)
public abstract void saveNow(SerializedUser user);
@Delete
public abstract void deleteNow(int id);
@Query("DELETE FROM users")
public abstract void deleteAllNow();
@Query("SELECT * FROM users")
public abstract List<SerializedUser> getAllNow();
@Query("SELECT * FROM users ORDER BY last_name ASC")
public abstract LivePagedListProvider<Integer, SerializedUser> usersByLastName();
}
因此在尝试实现数据库类时发生错误?在SerializedUser上的id并不是问题,我已将其注释掉,问题仍然相同.尝试清理并重建项目,然后重新启动Android Studio(无效并重新启动).
So the error happens when it tries to implement the database classes? That id on SerializedUser is not the problem, I have commented it out, the problem was still the same. Tried to clean and rebuild the project and restarted Android Studio (invalidate and restart).
推荐答案
删除
@Delete
public abstract void deleteNow(int id);
从您的Dao可以正常工作
from your Dao it will work
这篇关于Room IllegalArgumentException:无法将int转换为Element的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!