如何在java中创建领域对象后返回领域对象
我需要一个方法来创建一个有2个条件的方法,首先如果领域中存在对象,如果存在,则返回它,如果不存在,则创建它,然后返回它如何在java中创建领域对象后返回领域对象,java,android,realm,Java,Android,Realm,我需要一个方法来创建一个有2个条件的方法,首先如果领域中存在对象,如果存在,则返回它,如果不存在,则创建它,然后返回它 public RouteModel findOrInitById(final Long webId) { Realm realm = null; try { realm = Realm.getDefaultInstance(); RouteModel routeModel = realm.copyFromRealm(
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;
}
有没有办法不用查询就返回对象?创建界面
public interface TransactionCallback<T> {
void onSuccess(T result);
void onFail();
}
公共接口事务回调{
成功无效(T结果);
void onFail();
}
然后您的方法将是public void findOrInitById(最终长webId,最终TransactionCallback)
调用方法write
classVariable.findOrInitById(webid,
new TransactionCallback<RouteModel>() {
@Override
public void onSuccess(RouteModel result) {
// make something
}
@Override
public void onFail() {
// transaction failed. make toast for user
}
}
)
classVariable.findOrInitById(webid,
新建TransactionCallback(){
@凌驾
成功时公共无效(RouteModel结果){
//做点什么
}
@凌驾
public void onFail(){
//事务失败。为用户制作toast
}
}
)
通过调用callback.onSuccess(newRouteModel)
可以将领域对象
发送到调用findOrInitById
小心:如果你在成功的
中做了一些东西,你仍然在交易中
我有点困惑。。。你的问题到底是什么。我选你的最后一行
有没有办法不经过查询就返回对象?
不可以。在一个领域中,您总是必须假设其他客户机修改您的数据,因此查询是必需的
正如您在我的代码中所看到的,我刚刚在事务中创建了一个新的领域对象,我想返回一个新对象的副本,而不需要查询