0

モバイル クライアント用の REST サーバーを作成しました。データベースアクセスに休止状態を使用しています。しかし、私はこのコードに問題があるようです

    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());

4

1 に答える 1

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

または必要に応じて例外をスローするplacesAssociationFrom==null

同じことがplacesAssociationTo

また

if (ride!=null && ride.getUsers()!=null)
for (User user : ride.getUsers()) {
   ...
}
于 2013-05-28T01:33:26.117 に答える