2016-04-02 31 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 
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」。