2013-05-26 33 views
0

我爲我的移動客戶端做了一個REST服務器。我正在使用hibernate進行數據庫訪問。但我似乎有一些問題,此代碼休眠nullPointerException

public PlacesAssociation getPlacesAssocitionById(String id) { 
    session = HibernateUtil.getSessionFactory().getCurrentSession(); 
    PlacesAssociation placesAssociation=null; 
    try { 
     session.beginTransaction(); 
     placesAssociation = (PlacesAssociation) session.get(
       PlacesAssociation.class, id); 
     session.getTransaction().commit(); 
    } catch (RuntimeException e) { 
     session.getTransaction().rollback(); 
     e.printStackTrace(); 
    } 
    return placesAssociation; 
} 

我已經被解僱查詢哪裏我得到的結果,但在這裏我得到的NullPointerException手動某個時候出現在我的數據庫。由於這個問題是偶爾它變得非常難以追蹤它

任何人都可以幫助我解決這個問題

這是調用代碼

public Response getSpecificRide(@PathParam("id") String id) { 
    // TODO Hibernate for a specific ride identified by the ride id. 
    try { 
     System.out.println("Get Specific Ride " + id); 
     Ride ride = rideRepository.getRideById(Long.parseLong(id)); 
     RideDetailWrapper rideDetailWrapper = new RideDetailWrapper(); 
     PlacesAssociation placesAssociationFrom = placesAssociationRepository.getPlacesAssocitionById(ride.getFromId()); 
     PlacesAssociation placesAssociationTo = placesAssociationRepository.getPlacesAssocitionById(ride.getToId()); 
     rideDetailWrapper.setId(ride.getId()); 
     rideDetailWrapper.setInterval(ride.getInterval()); 
     rideDetailWrapper.setSeatsAvailable(ride.getSeatsAvailable()); 
     rideDetailWrapper.setTime(ride.getTime()); 
     rideDetailWrapper.setFromAddress(placesAssociationFrom.getName()); 
      rideDetailWrapper.setFromVicinity(placesAssociationFrom.getVicinity()); 
     rideDetailWrapper.setToAddress(placesAssociationTo.getName()); 
     rideDetailWrapper.setToVicinity(placesAssociationTo.getVicinity()); 
     rideDetailWrapper.setVehicleType(ride.getVehicleType()); 
     for (User user : ride.getUsers()) { 
      UserDetail userDetail = userRepository.getUserDetailByRegistrationId(user.getRegistrationId()); 
      UserDetailWrapper userDetailWrapper = new UserDetailWrapper(); 
      userDetailWrapper.setRegistrationId(userDetail.getRegistrationId()); 
      userDetailWrapper.setAge(userDetail.getAge()); 
      userDetailWrapper.setFirstName(userDetail.getFirstName()); 
      userDetailWrapper.setLastName(userDetail.getLastName()); 
      userDetailWrapper.setSex(userDetail.getSex()); 
      List<UserDetailWrapper> userDetailWrappers = rideDetailWrapper.getUserDetailWrappers(); 
      userDetailWrappers.add(userDetailWrapper); 
      rideDetailWrapper.setUserDetailWrappers(userDetailWrappers); 
     } 
     return Response.ok(rideDetailWrapper).build(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     System.out.println("Problem with Get Specific Ride"); 
     return Response.serverError().build(); 
    } 
} 

我在這一行rideDetailWrapper得到錯誤.setFromAddress(placesAssociationFrom.getName());如果需要的話

+2

什麼線是'NPE'上? –

+0

我已經添加了現在可以看到的調用代碼 – user1827423

回答

0
if (placesAssociationFrom!=null) { 
    rideDetailWrapper.setFromAddress(placesAssociationFrom.getName()); 
    ... 
} 

或拋出異常時placesAssociationFrom==null

同樣應爲placesAssociationTo

而且

if (ride!=null && ride.getUsers()!=null) 
for (User user : ride.getUsers()) { 
    ... 
}