首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DBFlow使用JSONModel抛出InvalidDBconfiguration: JSONModel未向数据库注册

DBFlow使用JSONModel抛出InvalidDBconfiguration: JSONModel未向数据库注册
EN

Stack Overflow用户
提问于 2015-02-17 12:21:33
回答 2查看 1.6K关注 0票数 0

我开始使用DBFlow并跟踪文档。我有一个巨大的JSON,我不想上传所有的内存,所以我使用他们已经实现的JSONModel方法。

代码语言:javascript
复制
    admissionJSONModel = new JSONModel<Admission>(jsonObject, Admission.class);

收生班:

代码语言:javascript
复制
@Table(databaseName = AppDatabase.NAME)
@ContainerAdapter
public class Admission extends BaseModel {

  /**
   * Ticket Reference (barcode number)
   */
  @NonNull
  @ContainerKey("TICKET_REF")
  @Column(columnType = Column.PRIMARY_KEY)
  String mTicketReference;

  @NonNull
  @Column
  @ContainerKey("FIRST_NAME")
  String mFirstName;

  /**
   * Ticket type (related to Record type)
   * In ADDRESS_CITY
   */
  @Column
  @ContainerKey("TICKET_TYPE")
  int mTicketType;


                ...
}

Ant数据库类:

代码语言:javascript
复制
@Database(name = AppDatabase.NAME, version = AppDatabase.VERSION, foreignKeysSupported = true)
public class AppDatabase {

    public static final String NAME = "App";

    public static final int VERSION = 1;
}

我拥有的异常的堆栈跟踪是:

代码语言:javascript
复制
Process: com.glownet.app.staging.debug, PID: 19083
    java.lang.RuntimeException: com.raizlabs.android.dbflow.structure.InvalidDBConfiguration: Table: com.raizlabs.android.dbflow.structure.container.JSONModel is not registered with a Database. Did you forget the @Table annotation?
            at com.raizlabs.android.dbflow.runtime.DBTransactionQueue.run(DBTransactionQueue.java:77)
     Caused by: com.raizlabs.android.dbflow.structure.InvalidDBConfiguration: Table: com.raizlabs.android.dbflow.structure.container.JSONModel is not registered with a Database. Did you forget the @Table annotation?
            at com.raizlabs.android.dbflow.config.FlowManager.getDatabaseForTable(FlowManager.java:63)
            at com.raizlabs.android.dbflow.runtime.transaction.process.ProcessModelHelper.process(ProcessModelHelper.java:26)
            at com.raizlabs.android.dbflow.runtime.transaction.process.ProcessModelTransaction.onExecute(ProcessModelTransaction.java:34)
            at com.raizlabs.android.dbflow.runtime.transaction.process.ProcessModelTransaction.onExecute(ProcessModelTransaction.java:12)
            at com.raizlabs.android.dbflow.runtime.DBTransactionQueue.run(DBTransactionQueue.java:63)

(提前谢谢你:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-18 06:02:47

对于作者,如果使用的是ProcessModelTransaction,则应该更改代码以将JSONModel保存到DB中,如下所示:

TransactionManager.getInstance().addTransaction(new ProcessModelTransaction<>(ProcessModelInfo.withModels(models).table(Admission.class);

目前,这是一个不存在table()方法的错误。因此,它认为JSONModels是一个表(因为它们实现了模型),但它只是实际模型的外壳、蓝图类。

谢谢你找到这个。如果您可以在github上打开一个问题,我可以将您标记为贡献者。谢谢。

票数 1
EN

Stack Overflow用户

发布于 2015-03-09 15:30:43

现在,从1.6.1版本开始,它将检测到模型是ModelContainer,并将获取要使用的适当表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28561361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档