Tag: 安卓室

Android室数据库 – 未解决的参考@Entity和其他注释

我在我的应用程序中使用Android Room Persistence库(v.1.0.0-alpha1)。 虽然它工作正常,当我在Android Studio中打开模型类(Kotlin Data类)时,它会显示所有用于Room数据库(如@Entity , @ColumnInfo等)的注释的未解析引用。我尝试将版本库更改为1.0.0 -alpha5但结果是一样的。 在林特检查显示删除不推荐使用的符号导入所有导入的注释.AS以前没有显示此错误。 我该如何解决这个问题 编辑以下是我在build.gradle中添加的导入 compile "android.arch.persistence.room:runtime:1.0.0-alpha5" compile "android.arch.persistence.room:rxjava2:1.0.0-alpha5" annotationProcessor "android.arch.persistence.room:compiler:1.0.0-alpha5" kapt "android.arch.persistence.room:compiler:1.0.0-alpha5"

Android – RoomDb – 实体插入成功找不到另一个活动中的选择查询

我有一个实体(科特林代码): @Entity(foreignKeys = arrayOf(ForeignKey(entity = Agent::class, parentColumns = arrayOf("guid"), childColumns = arrayOf("agentGuid"), onDelete = ForeignKey.CASCADE))) data class Client (@PrimaryKey var guid: String = "", var name: String = "", var email: String = "", var phone: String = "", var address: String = "", var agentGuid: String = "") 这里是相应的Dao类: @Dao public interface ClientDao { […]

Android:如何为Kotlin中的所有对象列表创建类型转换器(for Room)

我在我的项目中使用Room作为本地数据库解决方案。 对于某个对象类型的每个列表,我已经添加了类型转换器到项目中,所以类型转换器看起来像这样: @TypeConverter fun convertListToString(video: List<VideoType>): String { val videoArray = arrayOfNulls<VideoType>(video.size) for (i in 0..video.size – 1) { videoArray[i] = video[i] } var str = "" val gson = Gson() for (i in videoArray.indices) { val jsonString = gson.toJson(videoArray[i]) str = str + jsonString if (i < videoArray.size – 1) { str = str […]

Android Room:查询中的每个绑定变量都必须具有匹配的方法

我用kotlin使用android持久库库房。 Dao看起来像这样 @Dao interface CountryDao { @Query("SELECT * FROM countries") fun loadAllCountried() : LiveData<List<CountryEntity>> @Insert(onConflict = OnConflictStrategy.REPLACE) fun insertAll(products: List<CountryEntity>) @Query("SELECT * FROM countries WHERE id = :countryId") fun loadCountry(countryId: Int): LiveData<CountryEntity> @Query("SELECT * FROM countries WHERE id = :countryId") fun loadCountrySync(countryId: Int): CountryEntity } 这似乎对我很好,但我得到这个错误 Error: Each bind variable in the query must have […]

与房间的多对多关系导致错误:实体和Pojos必须有一个可用的公共构造函数

我遇到了标题中提到的问题。 我有以下实体: @Entity(tableName = "Person") data class Person(@PrimaryKey var id: Int, var firstName: String, var surname: String, var age: Int, var numberOfHobbies: Int) { @Ignore constructor() : this(0, "", "", 0, 0) } @Entity(tableName = "Skill") data class Skill(@PrimaryKey var id: Int, var skillName: String) { @Ignore constructor() : this(0, "") } @Entity(tableName = "PersonSkill") […]

使用Kotlin的房间,建立数据库时得到异常

更新:尝试迈克的建议,仍然得到错误: ext { kotlin_version = '1.1.50' arch_lib_version = '1.0.0-alpha9' gradle_version = '2.3.3' } kapt { generateStubs = true } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile "android.arch.lifecycle:runtime:$arch_lib_version" compile "android.arch.lifecycle:extensions:$arch_lib_version" compile "android.arch.persistence.room:runtime:$arch_lib_version" //annotationProcessor "android.arch.persistence.room:compiler:$arch_lib_version" kapt "android.arch.persistence.room:compiler:$arch_lib_version" annotationProcessor "android.arch.lifecycle:compiler:$arch_lib_version" compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" Error:Annotation processor '__gen.AnnotationProcessorWrapper_robotiumDebug_android_arch_persistence_room_RoomProcessor' not found ============ 在gradle中: ext { arch_lib_version = '1.0.0-alpha9' } compile "android.arch.persistence.room:runtime:$arch_lib_version" […]

无法使用Room ORM Kotlin保存包含List <Model>的数据模型

我在Kotlin的Room ORM上遇到了一个问题。 我的任务是有能力保存和获取数据模型RouteTemplateModel,它包含AddressModel类型的地址列表和包含特定路由标题的RouteModel类的对象。 这是我的代码: AddressModel.kt @Entity(foreignKeys = arrayOf( ForeignKey(entity = RouteModel::class, parentColumns = arrayOf("routeId"), childColumns = arrayOf("parentId")))) data class AddressModel( @PrimaryKey(autoGenerate = true) var addressId: Long, var parentId: Long, var street: String, var house: String, var entrance: String, var title: String){ constructor(): this(0, 0, "", "", "", "") } RouteModel.kt @Entity data class RouteModel( @PrimaryKey(autoGenerate […]

Kotlin的数据类,Android室和自定义setter

我有一个Android Room的实体,看起来像这样。 到目前为止,不用担心。 @Entity(tableName = "users", indices = arrayOf(Index(value = "nickName", unique = true))) data class User(@ColumnInfo(name = "nickName") var nickName: String, @ColumnInfo(name = "password") var password: String) { @ColumnInfo(name = "id") @PrimaryKey(autoGenerate = true) var id: Long = 0 } 现在我需要加密密码。 使用Java,这可以简单地用setter来完成,而且可以工作。 你怎么用Kotlin做到这一点。 我找不到将Android Room,自定义设置器和数据类组合在一起的解决方案。

Kotlin数据类的房间数据库错误

我一直在使用Room,而且遇到阻塞问题。 我已经完成并修复了Room库中的所有编译时检查,但是现在遇到以下错误: Entities and Pojos must have a usable public constructor. You can have an empty constructor or a constructor whose parameters match the fields (by name and type). 这在编译时出现了两次,没有证据表明这是从哪个类来的,但是我能够弄清楚(通过从数据库中删除类)这是其中的一个文件。 我假设它与主键是一个字符串,而不是一个Int(这是使用此类的两个类之一)有关,但文档中没有任何内容表明问题是什么,实际上文档显示该字符串是有效的主键。 @Entity(tableName = "inspections") data class Inspection( @SerializedName("id") var id: Int = 0, … // Rest of code left off for brevity, found to not […]

在使用kotlin时,使用实体和Dao文件的正式/正确的方式是什么?

试图用kotlin使用房间,没有找到官方文件。 以下是一些失败的发现。 使它为简单的情况下工作,但仍然不知道是否是正确的方式,所以张贴在这里,并希望有人知道办公室/正确的方式来做到这一点kotlin? 有两个问题,第一个:在定义实体时必须放在构造函数中,如果不是,它将编译但不生成xx_impl.java,如: @Entity(name = "user") class User { @ColumnInfo(name = "id") @PrimaryKey var id: String? = null @ColumnInfo(name = "name") var name: String? = null @ColumnInfo(name = "lastName") var lastName: String? = null @ColumnInfo(name = "age") var age: Int = 0 } 但如果放在构造函数中 @Entity(tableName = "post") class DbPost ( @ColumnInfo(name = "title") var […]