저는 응용 프로그램에서 데이터베이스 상호 작용을 위해 안드로이드의 룸 라이브러리를 사용하고 있습니다. 중복 엔트리가 데이터베이스에 삽입되는 것을 방지하는 방법에 대해 다소 혼란 스럽습니다.안드로이드 룸에 중복 된 엔티티가 삽입되었습니다.
내가 할 일이 없어 보이기 때문에 뭔가 빠뜨린 것 같아. 주제와 관련된 다양한 단어 조합을 Google에서 검색했습니다.
필자는 본질적으로 샘플 중 하나를 삽입하고 쿼리하는 데 사용합니다.
엔터티 :
@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<List<CameraEntity>> getCameras();
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertAll(List<CameraEntity> values);
}
객실 라이브러리의 측면에서, 데이터가 삽입되어야 할 때 몇 가지 규칙을 설정하는 방법은 없나요? 내가 읽은 한 게시물은 자동 증분 ID로 인해 각 항목이 기본 키의 관점에서 고유하게 나타납니다. 그것이 사실이라면,이 라이브러리를 사용하는 다른 사람들은 어떻게 그것을 설명합니까?
감사합니다.
"자동 증가 ID로 인해 각 항목이 기본 키의 관점에서 고유하게 나타납니다"- 정확합니다. "중복 항목이 데이터베이스에 삽입되는 것을 방지하는 방법"- 중복 항목을 어떻게 정의합니까? 'CameraEntity' 리스팅이 수정 되었기 때문에 부분적으로 알 수있는 방법이 없습니다. – CommonsWare
좋은 지적. 토론을 위해 몇 가지 필드를 추가했습니다. 일치하는 vendorId (이 경우에는 String)가있는 항목으로 중복 항목을 정의합니다. – andsec
그러면 기본 키가됩니다. 또는 [고유 색인] (https://developer.android.com/topic/libraries/architecture/room.html#entities-indices- uniqueness)을 추가하십시오. – CommonsWare