java - 调用另一个类方法时出现空指针异常
问题描述
我正在使用 spring data jpa 来创建服务。 当我独立检查方法的结果时,我试图调用 Room Department Mapping
类方法,它工作正常。但是当我从客房服务类调用这个方法时,我正在 进入Room service.
unclaimedRoomAssign()
java.lang.NullPointerException
RoomDepartmentMappingController
rdmService
对象参考我得到空,但我不明白为什么那个参考是空的?谁能告诉我?
RoomDepartmentMappingController 类
public class RoomDepartmentMappingController {
@Autowired
RoomDepartmentMappingService rdmService;
@PostMapping("/assignUnclaimedRooms")
public ResponseEntity<String> unclaimedRoomAssign(@NotNull @RequestParam(name="nDeptId", required= true) Integer nDeptId,
@NotNull @RequestParam(name="nRoomId" , required = true) Integer nRoomId,
@Nullable @RequestParam(name="nSubDeptId" , required = false) Integer nSubDeptId){
return ResponseEntity.ok(rdmService.unclaimedRoomAssign(nDeptId, nRoomId,nSubDeptId )); //line no 29 rdmService object is getting null
}
}
RoomDepartmentMappingService 类
@Service
public class RoomDepartmentMappingService {
@Autowired
RoomDepartmentMappingRepository roomDepartmentmappingRepo;
//Assign Unclaimed room to specified department and sub department
public String unclaimedRoomAssign(Integer nDeptId, Integer nRoomId, Integer nSubDeptId) {
RoomDepartmentMapping roomDepartmentMappingObj = new RoomDepartmentMapping();
if(nDeptId != 0) {
roomDepartmentMappingObj.nDeptId = nDeptId;
roomDepartmentMappingObj.nRoomId = nRoomId;
roomDepartmentMappingObj.nSubdeptId= nSubDeptId;
roomDepartmentMappingObj.nPercentageAssigned = 100;
roomDepartmentMappingObj.sStatus = "R";
}
roomDepartmentmappingRepo.save(roomDepartmentMappingObj);
return "Room assign sucessfully";
}
}
RoomDepartmentMappingRepository 类
@Repository
public interface RoomDepartmentMappingRepository extends JpaRepository<RoomDepartmentMapping, Integer>{
}
客房服务类
在这里,当我打电话时,rdmObj.unclaimedRoomAssign()
我得到空指针异常
@Service
public class RoomService {
@Autowired
RoomRepository roomRepository;
// Add new Room Details
public String addNewRoom(@RequestBody RoomInformation roomInfo) {
Room roomRecord = new Room();
if(roomInfo.nCampusId != 0)
roomRecord.nCampusId = roomInfo.nCampusId;
roomRecord.sRoomNumber=roomInfo.sRoomNumber;
roomRecord.sRoomDesc=roomInfo.sRoomDesc;
roomRecord.nArea=roomInfo.nArea;
roomRepository.save(roomRecord); // able to save data in room
if (roomInfo.nDeptId !=0 && roomRecord.nRoomId !=0) {
System.out.println("inside if");
RoomDepartmentMappingController rdmObj= new RoomDepartmentMappingController();
rdmObj.unclaimedRoomAssign( roomInfo.nDeptId, roomRecord.nRoomId, roomInfo.nSubDeptId);
}
return "New room added sucessfully";
}
安慰
inside if
2018-09-27 13:36:44.183 ERROR 11872 --- [nio-7075-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException: null
at com.spacestudy.controller.RoomDepartmentMappingController.unclaimedRoomAssign(RoomDepartmentMappingController.java:29) ~[classes/:na]
at com.spacestudy.services.RoomService.addNewRoom(RoomService.java:113) ~[classes/:na]
at com.spacestudy.controller.RoomController.addNewRoom(RoomController.java:41) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_144]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_144]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_144]
at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_144]
解决方案
推荐阅读
- angularjs - 带有 if 条件的 ng-repeat 的第一项
- svg - SVG 图像覆盖,无论大小/方向如何
- testing - 如何在 datadog 中运行特定时期的综合测试?
- javascript - 在不同位置具有不同部分的 React Component
- c - C pipe fork fd 题 - 简单的 xv6 乒乓球题
- javascript - 不变违规 - 无法导入自定义组件反应原生
- google-cloud-platform - 为什么不使用 ssh 连接 gcp slurm vm?
- css - 为什么页面加载时会滚动?
- c++ - 访问结构中的数组会导致警告与 clang
- mysql - 在 SQL 中也使用 group by 访问外键