今天遇到一个比较神奇的问题,可能是之前使用DBFlow已经是很长时间了,但是目前DBFlow已经更新到了5.0.0-alpha2,但是我仍旧使用了4.2.4版本。
annotationProcessor "com.github.Raizlabs.DBFlow:dbflow-processor:4.2.4" api "com.github.Raizlabs.DBFlow:dbflow-core:4.2.4" api "com.github.Raizlabs.DBFlow:dbflow:4.2.4"
我当时是这么引用的,编译的时候也通过了,但是在使用Kotlin的时候,问题就发生了。。。
在使用Kotlin的时候,通过编译生成了XXX_Table,但是运行的时候会报错,表示找不到。
@Table(database = CloudMusicDataBase.class) public class TestBean extends BaseModel implements Serializable { @PrimaryKey private long Id; @Column private long musicId; @Column private String musicName; public long getId() { return Id; } public void setId(long id) { Id = id; } public long getMusicId() { return musicId; } public void setMusicId(long musicId) { this.musicId = musicId; } public String getMusicName() { return musicName; } public void setMusicName(String musicName) { this.musicName = musicName; } }
class DBManager private constructor() : DBInterface { private val TAG = DBManager::class.java.simpleName override fun saveTestBean(bean: TestBean) {} override fun upDataTestBean(bean: TestBean) {} override fun getTestBean(id: Long): TestBean? { return null } override fun deleteTestBean(id: Long) { SQLite.select().from(TestBean::class.java).where(TestBean_Table.Id.eq(id)).querySingle() } companion object { var instance: DBManager? = null get() { if (field == null) { synchronized(DBManager::class.java) { if (field == null) { field = DBManager() } } } return field } private set } }
//DBflow annotationProcessor "com.github.Raizlabs.DBFlow:dbflow-processor:4.2.4" api "com.github.Raizlabs.DBFlow:dbflow-core:4.2.4" api "com.github.Raizlabs.DBFlow:dbflow:4.2.4" // sql-cipher database encyrption (optional) api "com.github.Raizlabs.DBFlow:dbflow-sqlcipher:4.2.4" api "com.github.Raizlabs.DBFlow:dbflow-rx2:4.2.4"
经过排查原因为使用Java的时候可以正常使用,但是使用了Kotlin就需要使用apt进行引用。
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交