通过将一首歌分配给乐队,我有一对多的关系关系,乐队有很多歌曲。所以最后我分配了song.setBand(乐队)。这一切都有意义,因为乐队是从listView中挑选出来的。问题是在尝试使用band添加新歌时使用executeTransationAsync。如果没有选择乐队,它可以工作,但除此之外,我遇到了线程问题。在处理当前线程时,我不得不再次选择乐队。有没有更好的解决方案呢?
public void add( Song song ){
int bandId = song.getBand().getId();
realm.executeTransactionAsync(thisRealm->{
Number nextID = thisRealm.where(Song.class).max("id");
if( nextID != null ){
song.setId( nextID.intValue() + 1 );
}else{
song.setId( 0 );
}
Band band = thisRealm.where(Band.class).equalTo( "id", bandId ).findFirst();
if( band != null ){
song.setBand( band );
}else{
song.setBand( null );
}
thisRealm.copyToRealm( song );
},
()->{
publishSubject.onNext( song );
},
error->{
publishSubject.onError( error );
});
}
答案 0 :(得分:2)
就今天的2016年8月29日而言,这是使用异步事务保存具有一对多关系的对象的正确方法。感谢您对留下评论的人的帮助。