2013-05-26 4 views
0

Я создал сервер REST для своего мобильного клиента. Я использую hibernate для доступа к базе данных. Но я, кажется, есть некоторые проблемы с этим кодом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()) { 
    ... 
} 
Смежные вопросы