Articles of android room

Android room persistent library – 如何插入具有List对象字段的类

在Android房间持久库中如何将整个Model对象插入到本身有另一个列表的表中。 让我告诉你我的意思: @Entity(tableName = TABLE_NAME) public class CountryModel { public static final String TABLE_NAME = “Countries”; @PrimaryKey private int idCountry; private List countryLang = null; public int getIdCountry() { return idCountry; } public void setIdCountry(int idCountry) { this.idCountry = idCountry; } public String getIsoCode() { return isoCode; } public void setIsoCode(String isoCode) { this.isoCode = […]

如何在首次运行时填充Android Room数据库表?

在SQLiteOpenHelper有一个onCreate(SQLiteDatabase …)方法,我用它来填充一些初始数据的数据库表。 有没有办法在第一个应用程序运行时将一些数据插入Room数据库表?

房间无法validation数据的完整性

使用Room Database运行程序时出现此错误 Room cannot verify the data integrity. Looks like you’ve changed schema but forgot to update the version number. You can simply fix this by increasing the version number. 看来我们需要更新数据库版本,但是我们可以在Room中做到这一点?

具有Android Room的可重用通用基类DAO

有没有办法用Android Room创建可重用的通用基类DAO? public interface BaseDao { @Insert void insert(T object); @Update void update(T object); @Query(“SELECT * FROM #{T} WHERE id = :id”) void findAll(int id); @Delete void delete(T object); } public interface FooDao extends BaseDao { … } public interface BarDao extends BaseDao { … } 我无法find实现这一目标的任何方法,而无需声明相同的接口成员并为每个子类编写查询。 在处理大量类似的DAO时,这变得非常乏味……

房间找不到实施

我在测试Room数据库时遇到问题:当我运行测试时,我得到以下exception: java.lang.RuntimeException: cannot find implementation for database.TicketDatabase. TicketDatabase_Impl does not exist at android.arch.persistence.room.Room.getGeneratedImplementation(Room.java:92) at android.arch.persistence.room.RoomDatabase$Builder.build(RoomDatabase.java:454) at com.sw.ing.gestionescontrini.DatabaseTest.setDatabase(DatabaseTest.java:36) at java.lang.reflect.Method.invoke(Native Method) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runners.Suite.runChild(Suite.java:128) at org.junit.runners.Suite.runChild(Suite.java:27) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at […]

Android会议室数据库:如何处理实体中的Arraylist?

我刚刚实施了Room来进行离线数据保存。 但在Entity类中,我收到以下错误: Error:(27, 30) error: Cannot figure out how to save this field into database. You can consider adding a type converter for it. 课程如下: @Entity(tableName = “firstPageData”) public class MainActivityData { @PrimaryKey private String userId; @ColumnInfo(name = “item1_id”) private String itemOneId; @ColumnInfo(name = “item2_id”) private String itemTwoId; // THIS IS CAUSING THE ERROR… BASICALLY […]

Android room persistent:AppDatabase_Impl不存在

我的app数据库类 @Database(entities = {Detail.class}, version = Constant.DATABASE_VERSION) public abstract class AppDatabase extends RoomDatabase { private static AppDatabase INSTANCE; public abstract FavoritesDao favoritesDao(); public static AppDatabase getAppDatabase(Context context) { if (INSTANCE == null) { INSTANCE = Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, Constant.DATABASE).allowMainThreadQueries().build(); //Room.inMemoryDatabaseBuilder(context.getApplicationContext(),AppDatabase.class).allowMainThreadQueries().build(); } return INSTANCE; } public static void destroyInstance() { INSTANCE = null; } } Gradle lib: […]

房间试图重新打开已经关闭的数据库

使用Android架构组件中的Room时,在尝试使用Dagger组件访问数据库时收到以下错误: java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase: (database path) 我使用Dagger版本2.11和Room版本1.0.0-alpha7 。 该错误在版本1.0.0-alpha5上可重现。 初始化数据库并将其注入我的类后,任何尝试通过DAO访问数据库时都会发生此错误。

Android会议室:如何建立关系模型?

我刚刚开始与Room合作,虽然一切看起来都非常直观,但我目前还不清楚我究竟能如何处理关系。 由于SQLite是关系数据库,因此您可以指定对象之间的关系。 尽管大多数ORM库允许实体对象相互引用,但Room明确禁止这样做。 即使您不能使用直接关系,Room仍然允许您在实体之间定义外键约束。(来源: https : //developer.android.com/topic/libraries/architecture/room.html#no-object-references ) 你应该如何模拟多对多或一对多的关系? 这在实践中会是什么样子(示例DAO +实体)?

Android会议室:订单不工作

我正在使用新的Android ORM Room。 我遇到了问题。 带参数的ORDER BY不起作用。 如果我想使用ORDER BY参数中的字段,则无效。 没有任何吸引力。 @Query(“SELECT * FROM User ORDER BY :orderBY ASC”) List sortedFind(String orderBY); 但是,当我直接将哪个字段排序然后它按预期工作。 @Query(“SELECT * FROM User ORDER BY name ASC”) List sortedFind(); 它是android Room上的bug,还是我做错了什么?