hibernate - 设置为 null 的 Spring 数据 jpa 查询给出 ORA-00971:缺少 SET 关键字
问题描述
我想删除一个列值,这是我的查询:
@Modifying
@Query("update TableA r set r.readDate= '' where r.id= :id")
void clearReadDate(@Param("id") String id);
但是当我执行它时,我得到:
ORA-00971: 缺少 SET 关键字
怎么来的?
底层的 SQL 也很奇怪:
Hibernate: update SC.TABLEA cross join set READ_DATE='' where ID=?
什么是交叉连接?
解决方案
尝试改用本机查询。
@Query("UPDATE TABLEA SET READ_DATE = ?1 WHERE ID = ?2", nativeQuery=true)
void clearReadDate(String date, String id);
或者您可以使用带有 @Param 注释的变体而不是 ?1 和 ?2
PS 默认情况下 EntityManager 不会刷新任何更改,为此,请使用 @Query 注释:
@Modifying(clearAutomatically=true)
推荐阅读
- flutter - 在 Flutter 中,获取 URL 但无法在 VideoPlayer 上显示视频并出现错误
- plantuml - PlantUML:如何使动作指向动作和项目
- ruby-on-rails - Rails Pg_Search 在没有更改代码的情况下停止工作
- pca - 尝试使用 R 中的 ggbiplot 删除 PCA 中的网格线和背景
- mysql - bash: X: 参数列表太长
- sql-server - SQL 到 SAS ODBC 连接 - NVARCHAR(max) 截断但出现错误:选项 dbtype 不是有效的输出数据集选项
- networking - 通过 Cisco 路由器使用 SSH 连接到 Cisco 交换机
- python-3.x - 'airflow.providers.google.cloud.hooks.gcs' 不是一个包
- java - 如何从 Tab 活动访问我的片段上的列表?
- c# - 仅在 IIS 服务器上的 ConfigureServices 中缺少 ASP.NET Core AddAuthorization 方法