奥姆利特罐';t在android中创建具有唯一组合的行

奥姆利特罐';t在android中创建具有唯一组合的行,android,sqlite,ormlite,Android,Sqlite,Ormlite,这是我定义的表字段: @DatabaseField(uniqueCombo = true, columnName = COLUMN_NAME_FEED_PROVIDER_TYPE, canBeNull = false) private int mFeedProviderType; @DatabaseField(uniqueCombo = true, columnName = COLUMN_NAME_FEED_PROVIDER_SUB_TYPE) private String mSubType;

这是我定义的表字段:

@DatabaseField(uniqueCombo = true, columnName = COLUMN_NAME_FEED_PROVIDER_TYPE, canBeNull = false)
private int mFeedProviderType;
@DatabaseField(uniqueCombo = true, columnName = COLUMN_NAME_FEED_PROVIDER_SUB_TYPE)
private String mSubType; 
@DatabaseField(columnName = COLUMN_NAME_DATE, canBeNull = false)
private long mDate;
我已设法添加了一行。但是,当我这次尝试添加第二行更改mSubType字符串字段时,它会抛出并排除:

at com.j256.ormlite.misc.SqlExceptionUtil.create(SqlExceptionUtil.java:22)
at com.j256.ormlite.stmt.mapped.MappedCreate.insert(MappedCreate.java:135)
at com.j256.ormlite.stmt.StatementExecutor.create(StatementExecutor.java:450)
at com.j256.ormlite.dao.BaseDaoImpl.create(BaseDaoImpl.java:310)
at android.app.Activity.performCreate(Activity.java:5104)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
at com.j256.ormlite.misc.SqlExceptionUtil.create(SqlExceptionUtil.java:22)
at com.j256.ormlite.android.AndroidDatabaseConnection.insert(AndroidDatabaseConnection.java:169)
at com.j256.ormlite.stmt.mapped.MappedCreate.insert(MappedCreate.java:91)
at com.j256.ormlite.android.AndroidDatabaseConnection.insert(AndroidDatabaseConnection.java:155)

即使您使用uniqueCombo,您也需要一个id。因此,添加一个generatedId注释,如下所示:

@DatabaseField(generatedId = true)
private int _id;//主键id

欢迎来到SO。请阅读这篇文章以提供高质量的答案。