2つの条件でメソッドを作成する必要があります。オブジェクトがレルムに存在する場合は最初に、存在する場合はそれを返し、存在しない場合は作成して返します。レルムオブジェクトをJavaで作成した後に返す方法
public RouteModel findOrInitById(final Long webId) {
Realm realm = null;
try {
realm = Realm.getDefaultInstance();
RouteModel routeModel = realm.copyFromRealm(
realm.where(RouteModel.class).equalTo("routeWebId", webId).findFirst());
if (routeModel != null) {
return routeModel;
} else {
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
Number currentIdNum = realm.where(RouteModel.class).max("routeId");
int nextId;
if (currentIdNum == null) {
nextId = 1;
} else {
nextId = currentIdNum.intValue() + 1;
}
RouteModel newRouteModel = new RouteModel.Builder()
.setRouteId(nextId)
.setWebId(webId)
.build();
realm.copyToRealmOrUpdate(newRouteModel);
}
});
//here i need to return the "new " object
}
} finally {
if (realm != null) {
realm.close();
}
}
return null;
}
クエリなしでオブジェクトを返す方法はありますか?
必須であり、あなたのデータを修正するために他のクライアントを想定しなければならない、私はちょうど私が欲しい、トランザクション内の新しいレルムのオブジェクトを作成しましたクエリを使わずに新しいオブジェクトのコピーを返す – Spaceghost87