我从我的班次计划者项目(以下github链接)中的自定义jpa方法findShiftNameById()中获取了nullPointerException。我已经在ShiftDetailsRepo接口内部使用@Query注释来实现该方法。请检查并让我知道可能是什么原因造成的。我尝试删除nativeQuery参数,但未提供shift_details未映射的错误。我尝试通过在int和long之间更改数据类型,还尝试将sd.shiftName更改为sd.shift_name(根据实际数据库中可用的列名),但仍然出现同样的nullPointerException错误。
Github链接-https://github.com/Anupam5713/shiftPlannerAPI 该方法在服务包内的ShiftPlanService类中被调用
我的查询中出了什么问题吗?
@Query(value = "select sd.shiftName from shift_details sd where sd.shiftId=:shiftId",nativeQuery=true)
public String findShiftNameById(@Param("shiftId") int shiftId);
答案 0 :(得分:0)
以下是造成NPE的原因。对sdr的调用是在连接依赖项之前完成的。
@Service
public class ShiftPlanService {
@Autowired
ShiftDetailsRepo sdr;
String S1 = sdr.findShiftNameById(1);
String S2 = sdr.findShiftNameById(2);
将这些初始化移动到@PostConstruct方法。
示例
@PostConstruct
public void initDetails() {
S1 = sdr.findShiftNameById(1);
S2 = sdr.findShiftNameById(2);
}