IllegalSelectQueryException 和 InvalidDataAccessApiUsageException

Mat*_*liz 3 java sql spring jpa exception

我在我的项目中使用查询注释。当我调用查询时,我得到了IllegalSelectQueryException. 我想用 PNR 号码所在的位置更新预订表上的状态列。

@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);
}
Run Code Online (Sandbox Code Playgroud)

错误

org.springframework.dao.InvalidDataAccessApiUsageException:期望一个 SELECT 查询:UPDATE Reservation SET Status = :Status WHERE pnr = :pnr at 引起:org.hibernate.query.IllegalSelectQueryException:期望一个 SELECT 查询 [org.hibernate.query.sqm.tree.select.SqmSelectStatement],但找到 org.hibernate .query.sqm.tree.update.SqmUpdateStatement [更新保留集状态 = :Status WHERE pnr = :pnr] 在 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个常用帧省略

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

Jen*_*ens 5

@org.springframework.data.jpa.repository.Modifying在方法上添加注解,并将返回值设置为void,因为更新查询不能返回值

@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);
}
Run Code Online (Sandbox Code Playgroud)