首页 > 解决方案 > 设置为 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=?

什么是交叉连接?

标签: hibernatejpaspring-data-jpa

解决方案


尝试改用本机查询。

@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)

推荐阅读