本文介绍了创建一个包含多层次的外键的表时ORM精简版会抛出错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对ORM精简版创建表时ActivityLog收到此错误:

  4月10日至23日:06:32.255:E / com.timelord.dao.DatabaseHelper(1487):
值java.sql.SQLException:引起ORMLite不能储存未知的类级
com.timelord.pojo.Category现场类别。序列化字段必须
指定的dataType = DataType.SERIALIZABLE

我怀疑,这是由多级外键引起的。正如你可以从下面的POJO类看,ActivityLog有活动,并且活动具有类别。

活动和分类工作正常。

如何做正确的映射?任何想法

  @DatabaseTable(tableName值=activityLogs)
公共类AcitvityLog实现Serializable {    私有静态最后的serialVersionUID长1L =;    @DatabaseField(generatedId =真)
    私人诠释身份证;    @DatabaseField(canBeNull = FALSE)
    @DatabaseFieldForeign(外资=真)
    私人活动活动;    @DatabaseField(dataType的= DataType.DATE,canBeNull = FALSE)
    私人时间戳的开始;    @DatabaseField(dataType的= DataType.DATE,canBeNull = TRUE)
    私人时间戳结束;
}@DatabaseTable(tableName值=活动)
公共类活动扩展BaseEntity实现Serializable {    私有静态最后的serialVersionUID长1L =;    @DatabaseField(canBeNull = FALSE)
    @DatabaseFieldForeign(外资=真)
    私人范畴类;
}@DatabaseTable(tableName值=类别)
公共类范畴扩展BaseEntity实现Serializable {    私有静态最后的serialVersionUID长1L =;
}公共类BaseEntity {
    @DatabaseField(generatedId =真)
    私人整数ID;    @DatabaseField(canBeNull = FALSE)
    私人字符串名称;
}


解决方案

没有,可以处理多层次外键没有任何问题。问题是,你不能混用 @DatabaseField @DatabaseFieldForeign 注释。你想要的是:

  @DatabaseField(canBeNull =假,外资= TRUE)
私人活动活动;

或者,如果你想使用的Andr​​oid下运行得更快更小的注解:

  @DatabaseFieldSimple(canBeNull = FALSE)
@DatabaseFieldForeign(外资=真)

无论您使用的只是的的 @DatabaseField @DatabaseFieldSimple 和其他 @DatabaseField ... 注释。下面是该文档 @DatabaseFieldSimple

这篇关于创建一个包含多层次的外键的表时ORM精简版会抛出错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-30 03:31