ObjectBox数据库ObjectBox入门-7-kotlin支持
HumphreyDanobjectbox
Kotlin 支持
kotlin Entity
- 在 kotlin 中,ID 属性应该这样定义 
@Id var id: Long = 0.ID 必须是 var. 
构造器
- ObjectBox 优先调用全参的构造方法。如果自定义属性或 transient 属性 或关联属性是构造方法的一部分参数,ObjectBox 将不会调用此构造方法.所以应该提供为这些参数提供默认值以确保无参构造方法存在。
 
1 2 3 4 5 6 7
   | @Entity data class Note(     @Id var id: Long = 0,     val text: String = "",     @Convert( converter = StringsConverter::class, dbType = String::class)     val strings: List<String> = listOf() )
   | 
 
kotlin Entity 中定义关联属性
在 kotlin 中定义关联属性可能比较麻烦。但请注意:关联属性必须为 var. 否则 initialization magic 将不起作用.
通常可以使用 lateinit 修饰关联属性
1 2 3 4 5 6 7 8 9 10 11 12
   | @Entity class Order {     @Id var id: Long = 0     lateinit var customer: ToOne<Customer> }
  @Entity class Customer {     @Id var id: Long = 0     @Backlink( to = "customer")     latelinit var orders: List<Order> }
   | 
 
kotlin 扩展函数
1 2 3
   | dependencies {     implementation "io.objectbox:objectbox-kotlin:$objectboxVersion" }
  | 
 
kotlin
1 2 3 4 5 6 7 8 9 10 11 12 13
   | val box: Box<DataClassEntity> = store.boxFor()
  val query = box.query {     equal(property,value)     order(property) }
  val query = box.query().inValues(property,array).build()
  toMany.applyChangesToDb(resetFirst = true) {      add(entity)     removeById(id) }
   |