提问人:MatildaEliz 提问时间:7/17/2023 最后编辑:JensMatildaEliz 更新时间:7/17/2023 访问量:711
IllegalSelectQueryException 和 InvalidDataAccessApiUsageException
IllegalSelectQueryException and InvalidDataAccessApiUsageException
问:
我为我的项目使用查询注释。当我调用查询时,我得到.我想更新预订表上的状态列,其中 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
我尝试更改查询,但没有任何效果
答:
将批注添加到方法中,并将返回值设置为 ,因为更新查询无法返回值@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);
}
评论