A.Z*_*A.Z 1 android dao compiler-errors android-room
当我创建一个从表名中选择所有项目的方法时,Dao 类无法解析表名!
我根本不明白为什么会发生这种事。问题是我正在开发另一个项目(两天前!!),其中我也使用了 Room 并且它工作得很好,当我创建这个新项目并定义了旧项目下面显示的类时现在同样的问题!(哈哈)
我的对象类
package com.example.adapterapp.Entites;
import androidx.room.Entity;
import androidx.room.Index;
import androidx.room.PrimaryKey;
@Entity(tableName = "items_table")
public class RoomItem {
@PrimaryKey(autoGenerate = true)
private int itemId;
private final String itemTitle;
private final String itemSubtitle;
private final String imageUri;
public RoomItem(String itemTitle, String itemSubtitle, String imageUri) {
this.itemTitle = itemTitle;
this.itemSubtitle = itemSubtitle;
this.imageUri = imageUri;
}
public int getItemId() {
return itemId;
}
public String getItemTitle() {
return itemTitle;
}
public String getItemSubtitle() {
return itemSubtitle;
}
public String getImageUri() {
return imageUri;
}
}
Run Code Online (Sandbox Code Playgroud)
道
package com.example.adapterapp.RoomDatabase;
import androidx.lifecycle.LiveData;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;
import com.example.adapterapp.Entites.RoomItem;
import java.util.List;
@Dao
public interface ItemDao {
@Insert
void insertItem(RoomItem roomItem);
@Update
void updateItem(RoomItem roomItem);
@Delete
void deleteItem(RoomItem roomItem);
@Query("SELECT * FROM items_table")
LiveData<List<RoomItem>> getAllItems();
}
Run Code Online (Sandbox Code Playgroud)
数据库
package com.example.adapterapp.RoomDatabase;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.room.Database;
import androidx.room.Room;
import androidx.room.RoomDatabase;
import androidx.sqlite.db.SupportSQLiteDatabase;
import com.example.adapterapp.Entites.RoomItem;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
@Database(entities = RoomItem.class, version = 1)
public abstract class ItemDatabase extends RoomDatabase {
private static ItemDatabase instance;
public abstract ItemDao noteDao();
public static synchronized ItemDatabase getInstance(Context context) {
if (instance == null) {
instance = Room.databaseBuilder(context.getApplicationContext(),
ItemDatabase.class, "items_database")
.fallbackToDestructiveMigration()
.addCallback(roomCallback)
.build();
}
return instance;
}
private static final RoomDatabase.Callback roomCallback = new RoomDatabase.Callback() {
@Override
public void onCreate(@NonNull SupportSQLiteDatabase db) {
super.onCreate(db);
new PopulateTaskRunner().executeAsync(new PopulateDatabaseTask(instance));
}
};
private static class PopulateTaskRunner {
private final Executor executor = Executors.newSingleThreadExecutor(); // change according to your requirements
private void executeAsync(PopulateDatabaseTask populateDatabaseTask) {
executor.execute(() -> {
try {
populateDatabaseTask.itemDao.insertItem(new RoomItem("title: 1", "subtitle: 1", null));
populateDatabaseTask.itemDao.insertItem(new RoomItem("title: 2", "subtitle: 2", null));
populateDatabaseTask.itemDao.insertItem(new RoomItem("title: 3", "subtitle: 3", null));
} catch (Exception e) {
e.printStackTrace();
}
});
}
}
private static class PopulateDatabaseTask {
private final ItemDao itemDao;
private PopulateDatabaseTask(ItemDatabase itemDatabase) {
this.itemDao = itemDatabase.noteDao();
}
}
}
Run Code Online (Sandbox Code Playgroud)
dependencies {
implementation 'androidx.appcompat:appcompat:1.4.2'
implementation 'com.google.android.material:material:1.6.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
//lifecycle
def lifecycle_version = "2.6.0-alpha01"
implementation "androidx.lifecycle:lifecycle-viewmodel:2.5.0"
implementation "androidx.lifecycle:lifecycle-livedata:2.5.0"
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"
//room database
def room_version = "2.4.2"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:2.4.2"
//firebase
// Import the BoM for the Firebase platform
// When using the BoM, you don't specify versions in Firebase library dependencies
implementation platform('com.google.firebase:firebase-bom:30.2.0')
//implementation 'com.google.firebase:firebase-analytics'
implementation 'com.google.firebase:firebase-firestore'
implementation 'com.google.firebase:firebase-storage'
implementation 'com.google.firebase:firebase-messaging'
implementation 'com.google.firebase:firebase-auth'
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我最近遇到了同样的问题,发现我只是忘了把这个 {}
改变
@Database(entities = RoomItem.class, version = 1)
Run Code Online (Sandbox Code Playgroud)
到
@Database(entities = {RoomItem.class}, version = 1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1056 次 |
| 最近记录: |