我开始使用DBFlow并跟踪文档。我有一个巨大的JSON,我不想上传所有的内存,所以我使用他们已经实现的JSONModel方法。
admissionJSONModel = new JSONModel<Admission>(jsonObject, Admission.class);收生班:
@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数据库类:
@Database(name = AppDatabase.NAME, version = AppDatabase.VERSION, foreignKeysSupported = true)
public class AppDatabase {
public static final String NAME = "App";
public static final int VERSION = 1;
}我拥有的异常的堆栈跟踪是:
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)(提前谢谢你:)
发布于 2015-02-18 06:02:47
对于作者,如果使用的是ProcessModelTransaction,则应该更改代码以将JSONModel保存到DB中,如下所示:
TransactionManager.getInstance().addTransaction(new ProcessModelTransaction<>(ProcessModelInfo.withModels(models).table(Admission.class);
目前,这是一个不存在table()方法的错误。因此,它认为JSONModels是一个表(因为它们实现了模型),但它只是实际模型的外壳、蓝图类。
谢谢你找到这个。如果您可以在github上打开一个问题,我可以将您标记为贡献者。谢谢。
发布于 2015-03-09 15:30:43
现在,从1.6.1版本开始,它将检测到模型是ModelContainer,并将获取要使用的适当表。
https://stackoverflow.com/questions/28561361
复制相似问题