Articles of android room

Android室错误:types转换器无法识别列表的枚举

房间库不识别我为枚举List创build的TypeConverter 。 但是,当我将其更改为枚举的ArrayList它工作正常。 任何人有任何想法,为什么和我能做些什么来使这个工作与List ? (在Kotlin中使用列表更容易,我真的不希望只是因为这个原因转换回ArrayList )。 这是我的代码: 我的模特: @Entity data class Example(@PrimaryKey val id: String?, val name: String, var days: List<DayOfWeek>?) DayOfWeek是一个枚举: enum class DayOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; val value: Int get() = ordinal + 1 companion object { private val ENUMS = DayOfWeek.values() fun of(dayOfWeek: Int): DayOfWeek { […]

Android室:顺序不工作

我正在使用新的android ORM房间。 我面临着问题。 ORDER BY与参数不起作用。 如果我想使用ORDER BY参数中的字段,这是行不通的。 没有任何东西。 @Query("SELECT * FROM User ORDER BY :orderBY ASC") List<User> sortedFind(String orderBY); 但是,当我把这个领域直接sorting,那么它是按预期工作。 @Query("SELECT * FROM User ORDER BY name ASC") List<User> sortedFind(); 是android房间的bug,还是我做错了什么?

具有AutoValue的Android Room持久性库实体

是否有可能使用房间持久性库的@Entity与AutoValue的@AutoValue和build设者在同一个POJO? 我应该怎么做?

房间持久性@Relation在Java中工作,但不在Kolin中

基于我以前的问题( Android持久性房间:“无法弄清楚如何从光标读取这个字段” ),我得到的工作得益于反馈,我在Kolin中实现了同样的例子(见下面的代码)。 我不得不做一些小的改变,如现在传递给查询的参数,这些参数必须作为“p0”,“p1”等传递。现在在Kotlin中,我得到以下有关UserWithPets类的错误: 错误:无法弄清楚如何从光标读取此字段。 e:private java.util.List宠物; @Dao interface UserDAO { @get:Query("SELECT * FROM user") val all: LiveData<List<User>> @Insert fun insertUser(user: User) //single one @Insert(onConflict = OnConflictStrategy.REPLACE) fun insertUsers(vararg users: User) @Query("SELECT * FROM User") fun loadUsersWithPets(): LiveData<List<UserWithPets>> } @Entity class Pet( var name: String?, var ownerId: Int,@PrimaryKey(autoGenerate = true)var id:Int) @Dao interface PetDAO { […]

Android空间可重复使用的通用基类DAO

有没有什么办法用Android的房间创build可重用的通用基类DAO? public interface BaseDao<T> { @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<FooObject> { … } public interface BarDao extends BaseDao<BarEntity> { … } 我一直无法find任何方法来实现这一点,而不必声明相同的接口成员,并为每个子类编写查询。 当处理大量类似的DAO时,这变得非常单调乏味。

Android室 – 简单的select查询 – 无法访问主线程上的数据库

我正在试用Room Persistence Library的示例。 我创build了一个实体: @Entity public class Agent { @PrimaryKey public String guid; public String name; public String email; public String password; public String phone; public String licence; } 创build一个DAO类: @Dao public interface AgentDao { @Query("SELECT COUNT(*) FROM Agent where email = :email OR phone = :phone OR licence = :licence") int agentsCount(String email, String […]

unit testing室和LiveData

我目前正在开发一个应用程序使用新的Android架构组件 。 具体来说,我正在实现一个房间数据库,在其中一个查询返回一个LiveData对象。 插入和查询按预期工作,但我有一个问题,使用unit testingtesting查询方法。 这是我试图testing的DAO: NotificationDao.kt @Dao interface NotificationDao { @Insert fun insertNotifications(vararg notifications: Notification): List<Long> @Query("SELECT * FROM notifications") fun getNotifications(): LiveData<List<Notification>> } 正如你所看到的,查询函数返回一个LiveData对象,如果我改变这只是一个List , Cursor或基本上无论那么我得到预期的结果,这是数据库中插入的数据。 问题是,以下testing总是失败,因为LiveData对象的值始终为null : NotificationDaoTest.kt lateinit var db: SosafeDatabase lateinit var notificationDao: NotificationDao @Before fun setUp() { val context = InstrumentationRegistry.getTargetContext() db = Room.inMemoryDatabaseBuilder(context, SosafeDatabase::class.java).build() notificationDao = db.notificationDao() } […]

如何将房间持久性库导入到Android项目

我最近看到Google I / O Room Persistence Library上发布的新function可以与Android上的Sqlite数据库一起使用。 我一直在寻找官方文档 ,我没有find我应该导入到我的Android项目我的gradle文件的依赖关系。 有人可以帮我一把吗?

如何将房间持久性库与预填充数据库一起使用?

我想使用预先填充的数据库的房间,但我不明白如何告诉房间在哪里可以find我的数据库。 我现在把它放在src/main/assets/databases ,当我为Room数据库创build实例时,我这样创build它: Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "justintrain.db").allowMainThreadQueries().build(); 这样,我认为它是每次创build一个新的数据库,或者反正它不使用预先填充的数据库。 我怎样才能find我的分贝?

我怎样才能代表与Android室的多对多关系?

我怎样才能代表与房间的多对多关系? 例如我有“客人”和“保留”。 预订可以有许多客人和一位客人可以成为许多预订的一部分。 这是我的实体定义: @Entity data class Reservation( @PrimaryKey val id: Long, val table: String, val guests: List<Guest> ) @Entity data class Guest( @PrimaryKey val id: Long, val name: String, val email: String ) 在查看文档时,我遇到了@Relation 。 我发现它真的很混乱。 根据这个我想创build一个POJO并在那里添加关系。 所以,以我的例子,我做了以下 data class ReservationForGuest( @Embedded val reservation: Reservation, @Relation( parentColumn = "reservation.id", entityColumn = "id", entity = […]