Kotlin是否支持100%的Ormlite? (数据类)

我是Kotlin的新手,我希望将我的java模型类与数据类进行转换,这有可能吗? 我的意思是Ormlite是否支持这个?

我把我的daos转换成正常的类没有问题

import com.j256.ormlite.field.DatabaseField import com.j256.ormlite.table.DatabaseTable @DatabaseTable(tableName = HabitDao.TABLE) class HabitDao() { companion object { const val TABLE = "habitdao" const val ORDER = "order" const val ID = "id" } @DatabaseField(columnName = ID, generatedId = true) var id: Int = 0 @DatabaseField(index = true) lateinit var title: String @DatabaseField lateinit var intention: String @DatabaseField(columnName = ORDER) var order: Int = 0 constructor(title: String, intention: String) : this() { this.title = title this.intention = intention } override fun toString(): String { return title } } 

您只需要提供空的构造函数(请参阅类定义中的构造函数)。 此外,lateinit使属性更容易使用。

编辑:数据类似乎添加function,当你需要序列化这些对象是有用的。 Ormlite能够处理正常的Java类,所以不需要这样做。 此外,数据类预计包含在构造函数中的所有字段,你不希望id字段在那里。

我用Kotlin的数据类使用OrmLite没有问题。 关键是为所有字段指定默认值,然后Kotlin为数据类生成一个空的构造函数:

 @DatabaseTable(tableName = "sample_table") data class SampleRecord( @DatabaseField(id = true) var id: String? = null, @DatabaseField(canBeNull = false) var numField: Int? = null, @DatabaseField var strField: String = "", @DatabaseField var timestamp: Date = Date() ) 

»在GitHub上工作的例子

不,ORMLite不能用于Kotlin数据类(从版本1.1.2开始),因为ORMLite要求使用@DatabaseField注释字段,这对于使用数据类语法声明的字段是不可能的。