作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我已使用以下代码对我的数据库运行查询。
@Repository
public interface PurchaseOrderRepository extends JpaRepository<PurchaseOrder, PurchaseOrderID> {
@Query(value ="update PURCHASE_ORDER set status='REJECTED' where id=?1", nativeQuery = true)
void RejectPO(Long id);
}
然后我简单地在服务中调用这个方法
@Service
public class SalesService {
@Autowired
PurchaseOrderRepository purchaseOrderRepository;
public void RejectPurchaseOrder(Long of) {
purchaseOrderRepository.RejectPO(of);
}
}
但是我遇到了一个错误:
org.h2.jdbc.JdbcSQLException: Method is only allowed for a query. Use execute or executeUpdate instead of executeQuery; SQL statement:
update PURCHASE_ORDER set status='REJECTED' where id=? [90002-191]
问题是,我从未调用过executeQuery
,我只是要求使用jpa
运行它。那我该如何解决呢?
最佳答案
为了让 JPA 实际运行修改数据库状态的自定义 @Query,必须使用 @Modifying 注释该方法以告诉 JPA 使用 executeUpdate 等。
代替
@Query(value ="update PURCHASE_ORDER set status='REJECTED' where id=?1", nativeQuery = true)
void RejectPO(Long id);
尝试
@Modifying
@Query(value ="update PURCHASE_ORDER set status='REJECTED' where id=?1", nativeQuery = true)
void RejectPO(Long id);
参见 http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.modifying-queries了解详情。
关于java - org.h2.jdbc.JdbcSQL异常 : Method is only allowed for a query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36563595/
我是一名优秀的程序员,十分优秀!