IllegalSelectQueryException 和 InvalidDataAccessApiUsageException

IllegalSelectQueryException and InvalidDataAccessApiUsageException

提问人:MatildaEliz 提问时间:7/17/2023 最后编辑:JensMatildaEliz 更新时间:7/17/2023 访问量:711

问:

我为我的项目使用查询注释。当我调用查询时,我得到.我想更新预订表上的状态列,其中 PNR 编号存在。IllegalSelectQueryException

@Repository
public interface ReservationRepository extends JpaRepository<Reservation,String> {
    @Query("UPDATE Reservation SET Status =:Status WHERE pnr =:pnr")
    String setStatus( @Param("Status")String Status,@Param("pnr") String pnr);
}

错误

org.springframework.dao.InvalidDataAccessApiUsageException:期待 a SELECT 查询 : at Caused by: org.hibernate.query.IllegalSelectQueryException: 期待 SELECT 查询 [org.hibernate.query.sqm.tree.select.SqmSelectStatement],但找到 org.hibernate.query.sqm.tree.update.SqmUpdateStatement [更新 预留 SET Status = :Status WHERE pnr = :p nr] at org.hibernate.query.sqm.internal.SqmUtil.verifyIsSelectStatement(SqmUtil.java:81) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final] 在 org.hibernate.query.sqm.internal.QuerySqmImpl.verifySelect(QuerySqmImpl.java:499) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final] ...102 个常用帧 省略UPDATE Reservation SET Status = :Status WHERE pnr = :pnr

我尝试更改查询,但没有任何效果

Java SQL Spring 异常 JPA

评论


答:

4赞 Jens 7/17/2023 #1

将批注添加到方法中,并将返回值设置为 ,因为更新查询无法返回值@org.springframework.data.jpa.repository.Modifyingvoid

@Repository
public interface ReservationRepository extends JpaRepository<Reservation,String> {
    @Modifying
    @Transactional
    @Query("UPDATE Reservation SET Status =:Status WHERE pnr =:pnr")
    void setStatus( @Param("Status")String Status,@Param("pnr") String pnr);
}