在ORMLite中生成的ID

时间:2016-01-25 21:15:52

标签: java database ormlite

我的数据库出了问题。我正在从具有特定ID的API下载数据。我希望这些ID保留在我的数据库中,以便将来可以在应用程序中使用它们。我在文档中读到我应该添加allowGeneratedIdInsert = true但是它不起作用 - 我仍然得到0,1,等等在数据库中作为dao.create(...)之后的ID。你能检查一下我的代码并告诉我我做错了吗?

这是我的模特:

@DatabaseField(id = true, columnName = "id", allowGeneratedIdInsert = true)
private int id;

创建记录:

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
   if(isChecked) {
      try {
         final Dao<Concert, Integer> concertDao = getHelper().getConcertDao();
         concertDao.create(concertList.get(position));
      } catch (SQLException e) {
         e.printStackTrace();
      }
   }
}

1 个答案:

答案 0 :(得分:1)

来自documentation for allowGeneratedIdInsert

  

仅当数据库支持此行为并且该字段的generatedId()也为真时才有效。

默认情况下,generatedIdfalse

@DatabaseField(columnName = "id", generatedId = true, allowGeneratedIdInsert = true)
private int id;

另外,您可以阅读:

  

如果该字段为null或0,则将生成id。当您有一个表格,其中项目有时会有ID并且有时需要生成它时,这非常有用。

您确定要进行此操作吗?如果您的ID已经在后端生成,那么您可能不需要allowGeneratedIdInsertgeneratedId,默认情况下它们都是假的。