需要将对象插入我的领域,并且到目前为止工作正常。
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
来插入对象?
在类似的问题中,我找到了这个解决方案:
public boolean checkIfExists(String id){
RealmQuery<Data> query = realm.where(Data.class)
.equalTo("id", id);
return query.count() == 0 ? false : true;
}
然而,在我的实施中没有用,我错过了什么吗?
答案 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在你需要独特的字段上。