java - 房间 IllegalArgumentException : intcannot be converted to an Element

标签 java android android-room

我在尝试编译项目时遇到此错误:

Error:Execution failed for task ':app:compileDebugJavaWithJavac'. java.lang.IllegalArgumentException: intcannot be converted to an Element

还有这个警告:

Warning:Supported source version 'RELEASE_7' from annotation processor 'android.arch.persistence.room.RoomProcessor' less than -source '1.8'

这些是我的数据库相关类:

@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(无效并重新启动)。

最佳答案

删除

@Delete
public abstract void deleteNow(int id);

在你的 Dao 中它会起作用

关于java - 房间 IllegalArgumentException : intcannot be converted to an Element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47127437/

相关文章:

java - 如何避免出现这样的情况呢?

android - Ormlite 连接 3 个表(多对多)

android - 使用 Kotlin Coroutines 和 Flow 测试 Room DAO 的方法

java - 相同类型的嵌套关系

android - SQLite 和房间持久性库 : how to combine IN condition and LIKE?

java - 动态生成 JNLP

java - 如何将一个格式化的日期字符串转换为另一种格式

java - 如何通知 TableCellEditor 表行已删除?

java - 如何从另一个 xml 文件动态更新 xml 文件?

android - 使用服务在 Activity 之间共享/保存数据