2017-08-15 5 views
2

CountryのcountryListを渡して、Roomを使用してデータベースに保存します。その保存は、値とOnConflictの複製戦略は動作しません。Insertコマンドのリストを渡す部屋を使用して、Androidの値を複写する

AppDatabase.getAppDatabase(getApplicationContext()).countryDao().insertAllList(countryList); 

以下の置き換え戦略に合格していてもリストの値は複製されています。ここで

@Insert(onConflict = OnConflictStrategy.REPLACE) 

はCountryDaoある

@Dao 
public interface CountryDao { 

@Query("SELECT * FROM country") 
List<Country> getAllCountries(); 

@Insert(onConflict = OnConflictStrategy.REPLACE) 
void insertAllList(List<Country> countries); 

}

国オブジェクト:

@Entity(tableName = "country") 
    public class Country { 
    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    @PrimaryKey(autoGenerate = true) 
    private int id; 
    private long countryId; 
    private String countryName; 

    public long getCountryId() { 
     return countryId; 
    } 

    public void setCountryId(long countryId) { 
     this.countryId = countryId; 
    } 

    public String getCountryName() { 
     return countryName; 
    } 

    public void setCountryName(String countryName) { 
     this.countryName = countryName; 
    } 
} 

答えて

3

は、あなたがそうでなければ各要素は持っていますが、それぞれの国ごとに異なるIDを持っており、それを手動で割り当てる必要がありますid = 0と別の値を上書きします。

自動生成キー

@PrimaryKey(autoGenerate = false) 
private int id; 
+0

なしてみません - 2とのその動作していない、Infactはありリストが、そのそれ以外の場合は、各要素にidを持つことになり、それぞれの国ごとに異なるIDを持っている – nauman

+0

あなたがしなければならない一つの値を格納= 0、別の値を上書きする。 – kkk

関連する問題