2016-04-02 7 views
0

オブジェクトを私の領域に挿入する必要があります。レルムに一意のオブジェクトを挿入するにはどうすればいいですか?

public void markAsFavorite(View view) 
    { 
     Realm realm = Realm.getInstance(this); 
     realm.beginTransaction(); 
     favorite f1 = realm.createObject(favorite.class); 
     f1.setMovieName(m_name); 
     f1.setRelease_date(release_date); 
     f1.setPoster_link(poster_link); 
     f1.setID(id); 
     f1.setVote_avg(vote_avg); 
     f1.setSynopsis(synopsis); 
     f1.setTrailer(fn_trailer); 
     realm.commitTransaction(); 
    } 

favorite.class:今、問題がある

public class favorite extends RealmObject 
{ 
    private String movieName,release_date,poster_link,synopsis,trailer; 
    private double vote_avg; 

    @PrimaryKey 
    private int ID; 

    public int getID() 
    { 
     return ID; 
    } 

    public void setID(int ID) 
    { 
     this.ID = ID; 
    } 

    public String getMovieName() 
    { 
     return movieName; 
    } 

    public void setMovieName(String movie) 
    { 
     this.movieName = movie; 
    } 

    public String getRelease_date() 
    { 
     return release_date; 
    } 

    public void setRelease_date(String release) 
    { 
     this.release_date = release; 
    } 

    public String getPoster_link() 
    { 
     return poster_link; 
    } 

    public void setPoster_link(String poster) 
    { 
     this.poster_link = poster; 
    } 

    public String getSynopsis() 
    { 
     return synopsis; 
    } 

    public void setSynopsis(String syn) 
    { 
     this.synopsis = syn; 
    } 

    public String getTrailer() 
    { 
     return trailer; 
    } 

    public void setTrailer(String trail) 
    { 
     this.trailer = trail; 
    } 

    public double getVote_avg() 
    { 
     return vote_avg; 
    } 

    public void setVote_avg(double vote) 
    { 
     this.vote_avg = vote; 
    } 


} 

:私はあなたが見ることができるように、レコードにのみユニークなアイテムを挿入する必要があり、私はIDなどを定義しましたprimaryKey。

@PrimaryKey 
private int ID; 

それは同じIDレルムに存在しないことを確認することによって、オブジェクトを挿入することは可能ですか?同様の質問で


EDIT-1

、私はこの解決策を見つけた:

public boolean checkIfExists(String id){ 

    RealmQuery<Data> query = realm.where(Data.class) 
      .equalTo("id", id); 

    return query.count() == 0 ? false : true; 
} 

しかし、私は何かが足りないのです、私の実装では動作しませんでしたか?

答えて

1

はこれを試してみてください:主キーが一意であることを余儀なくされ

public boolean checkIfExists(String id){ 

RealmResults<Data> query = realm.where(Data.class) 
        .equalTo("ID", id).findAll(); 

     return query.size() == 0 ? false : true; 
    } 
+0

@shaheenが自分のコードを更新しました。 – Sabari

+0

それは働いていますか? – Sabari

0

すでに存在するidを持つオブジェクトを挿入しようとした場合、その後、挿入操作は失敗し、レルムは例外が発生します。

プライマリキーとは異なる他のフィールドをチェックする場合は、一意制約はまだ使用できません。唯一の方法は、連結を含むクエリを使用して手動で(挿入の直前に)チェックすることです一意にする必要があるフィールドの "equalTo"。

関連する問題