2017-04-20 5 views
0

객체가 영역에 존재하는 경우 먼저 두 조건이있는 메소드를 만들 필요가 있습니다. 존재하는 경우 반환하고, 생성하지 않은 경우 생성 한 다음 반환하십시오.자바에서 생성 된 후 영역 객체를 반환하는 방법

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; 
    } 

쿼리없이 객체를 반환 할 수있는 방법이 있습니까?

답변

0

아직. 귀하의 최종 라인을 선택하십시오

쿼리없이 개체를 반환 할 수있는 방법이 있습니까? 렐름에서 번호, 당신은 항상 당신이 내 코드에서 볼 수 있듯이, 따라서 쿼리

+0

필수이며, 데이터를 수정하는 다른 클라이언트를 가정해야, 난 그냥 내가 원하는 트랜잭션 내부의 새로운 영역 객체를 생성 쿼리없이 새 객체의 복사본을 반환하는 방법 – Spaceghost87

0

인터페이스를 만들

public interface TransactionCallback<T> { 
    void onSuccess(T result); 
    void onFail(); 
} 

다음 방법은 될 방법은 당신이 당신의 realm-Object 당신이 findOrInitById

,369 전화 곳으로 보내 전화 callback.onSuccess(newRouteModel)에 의해

classVariable.findOrInitById(webid, 
    new TransactionCallback<RouteModel>() { 
     @Override 
     public void onSuccess(RouteModel result) { 
      // make something 
     } 

     @Override 
     public void onFail() { 
      // transaction failed. make toast for user 
     } 
    } 
) 

쓰기 전화 public void findOrInitById(final Long webId, final TransactionCallback<RouteModel> callback)

주의 : 당신이 onSuccess에서 몇 가지 물건을 할 경우, 정확히 질문이 무엇인지 ... 나는 조금 혼란 스러워요 transaction

관련 문제