作者:龙门居士1966 | 来源:互联网 | 2023-01-11 17:26
我正在使用Android的Room库进行应用程序中的数据库交互,我对如何防止重复条目插入数据库感到困惑.
我觉得我必须遗漏一些东西,因为这似乎应该很简单.我搜索谷歌搜索与该主题相关的各种单词组合无济于事.
我基本上使用其中一个示例进行插入和查询.
实体:
@Entity(tableName = "cameras")
public class CameraEntity {
@PrimaryKey(autoGenerate = true)
private int id;
private Integer accountId;
private Integer dvrId;
private String vendorId;
...
}
DAO:
@Dao
public interface CameraDao {
@Query("SELECT * FROM cameras")
Flowable> getCameras();
@Insert(OnConflict= OnConflictStrategy.REPLACE)
void insertAll(List values);
}
就Room库而言,有没有办法在何时插入数据时设置一些规则?我读过的一篇文章提到自动增量ID导致每个项目在主键方面是唯一的.如果这是真的,其他人如何使用这个库来解释这个问题呢?
谢谢!
1> CommonsWare..:
仅使用自动生成的主键,如果这确实是您需要的主键.如果您的数据具有自然主键,请使用它,并根据REPLACE
将要执行的操作确定唯一性.
如果您想要一个自动生成的主键,但您还希望其他列(或列的组合)是唯一的,请在列上添加唯一索引,这也会影响REPLACE
.