2013-11-24 2 views
0

Android 프로젝트에 greenDAO을 사용하고 있습니다. 정말 행복합니다.greenDAO : 삽입시 NullPointerException

슬프게도, 나는 현재 아주 이상한 문제에 봉착 : NullPointerException이 새로 만든 LocationCoords 객체의, LocationCoordsDao를 사용하여 삽입을하는 동안. 예를 들어, 식사 엔터티에 삽입이 잘 작동하기 때문에이 특정 엔터티에서만 발생합니다.

public class MealsDiaryGenerator { 

    public static void main(String[] args) { 
     Schema schema = new Schema(2, "ch.cidzoo.journalibs.db"); 

     addMeal(schema); 

     try { 
      new DaoGenerator().generateAll(schema, "../JournalIBS/src"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    private static void addMeal(Schema schema) { 
     Entity loc = schema.addEntity("LocationCoords"); 
     loc.addIdProperty().autoincrement(); 
     loc.addDoubleProperty("latitude").notNull(); 
     loc.addDoubleProperty("longitude").notNull(); 

     Entity meal = schema.addEntity("Meal"); 
     meal.addIdProperty(); 
     meal.addDateProperty("date"); 
     Property locId = meal.addLongProperty("locationCoordsId").getProperty(); 
     meal.addToOne(loc, locId); 
    } 

} 

그리고 지금은 실패 : 나는 아무런 영향으로 삽입 (전 식사)를 교환하기 위해 노력했습니다

@Override 
public void onLocationChanged(Location location) { 
    double lat = location.getLatitude(); 
    double lon = location.getLongitude(); 

    Log.i("onLocationChanged", "got a location update: lat=" + lat + "/lon=" + lon); 

    LocationCoords loc = new LocationCoords(null, lat, lon); 
    locationCoordsDao.insert(loc); //NullPointerException 
    Log.d("DaoExample", "Inserted new coord, ID: " + loc.getId()); 

    Meal meal = new Meal(null, new Date(), null); 
    mealDao.insert(meal); 
    Log.d("DaoExample", "Inserted new meal, ID: " + meal.getId()); 
    ((MealAdapter)getListAdapter()).updateMeals(mealDao.loadAll()); 
} 

여기 내 설명이다. 나는 또한 더 이상 운이없는 LocationCoords 엔티티에 대한 모든 생성자를 시도했다.

도움이 될 것입니다.

+1

당신의 스택 트레이스를 추가하십시오 할 수 있습니다. – AlexS

+0

'locationCoordsDao'는 어디에서 초기화 했습니까? – Nizam

답변

1

DAO를 사용하기 전에 먼저 DAO를 소개해야합니다. 그것은이

DevOpenHelper helper = new DaoMaster.DevOpenHelper(this.getActivity(), 
      "DB name", null); 
    db = helper.getWritableDatabase(); 
    mDaoMaster = new DaoMaster(db); 
    mDaoSession = mDaoMaster.newSession(); 
    LocationCoordsDao mLocationCoordsDao = mDaoSession.getLocationCoordsDao(); 

처럼 그런 다음이

LocationCoords loc = new LocationCoords(null, lat, lon); 
    mLocationCoordsDao.insert(loc); // init before use