如何在领域中插入唯一对象?

时间:2016-04-02 05:26:14

标签: android realm

需要将对象插入我的领域,并且到目前为止工作正常。

    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来插入对象?

<小时/> 修改-1

在类似的问题中,我找到了这个解决方案:

   public boolean checkIfExists(String id){

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

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

然而,在我的实施中没有用,我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

试试这个:

    public boolean checkIfExists(String id){

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

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

答案 1 :(得分:0)

主键被强制为唯一,然后如果您尝试插入一个已存在id的对象,插入操作将失败,而realm将引发异常。

如果要检查与用作主键的字段不同的其他字段,则唯一约束尚不可用,那么唯一的方法是使用带有和的串联的查询手动检查它们(就在插入之前) #34; equalTo&#34; s在你需要独特的字段上。