JPA中的@Query抛出空指针异常

时间:2020-01-26 12:52:05

标签: spring-data-jpa

我从我的班次计划者项目(以下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);

1 个答案:

答案 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);
}