症状
一部の項目をデーターベースで管理したくないオブジェクトがあって、コンストラクターでColumnを指定しないフィールドを設定するとビルドに失敗した。
@Table
class OrmaTodo(
@Setter("id") @PrimaryKey var id: Long,
@Setter("foo") @Column var foo: String,
var bar:Int? = null
)
上記のコードをビルドしようとすると、以下のメッセージが出て失敗する。
barプロパティは Setterを指定していないのだけれど。。。
Error:(51, 2) error: [OrmaProcessor] The @Setter constructor parameters must satisfy all the @Column fields
環境
Ormaのバージョンは4.2.5
kapt 'com.github.gfx.android.orma:orma-processor:4.2.5'
compile 'com.github.gfx.android.orma:orma:4.2.5'
対策
プライマリーコンストラクターでなければ大丈夫
@Table
class OrmaTodo(
@Setter("id") @PrimaryKey var id: Long,
@Setter("foo") @Column var foo: String
) {
constructor(id:Long, foo:String, bar:Int?) : this(id, foo) {
this.bar = bar
}
var bar: Int? = null
}
コンストラクターで指定する必要がないプロパティであれば、コンストラクタから単に外すだけでもOK
@Table
class OrmaTodo(
@Setter("id") @PrimaryKey var id: Long,
@Setter("foo") @Column var foo: String
) {
var bar: Int? = null
}