【问题标题】:Spring data jpa query with set null gives ORA-00971: missing SET keyword设置为 null 的 Spring 数据 jpa 查询给出 ORA-00971:缺少 SET 关键字
【发布时间】:2020-07-03 15:28:04
【问题描述】:

我想删除一个列值,这是我的查询:

@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=?

什么是交叉连接?

【问题讨论】:

  • update Entity。您真的将您的实体命名为 Entity 还是我错过了有关 Spring JPA 和某种特殊的 Entity 关键字的信息?尝试更改您的班级名称。 Entity 可能是一个保留字。交叉连接是笛卡尔积。更多信息在这里:w3resource.com/sql/joins/cross-join.php
  • 嗨!这只是我当时编的一个名字,但我更新了问题
  • 有时候,名字很重要。它可以触发这样的错误。

标签: hibernate jpa spring-data-jpa


【解决方案1】:

尝试使用本机查询。

@Query("UPDATE TABLEA SET READ_DATE = ?1 WHERE ID = ?2", nativeQuery=true)
void clearReadDate(String date, String id);

或者您可以使用带有 @Param 注释的变体来代替 ?1 和 ?2

附:默认情况下 EntityManager 不会刷新任何更改,为此,请使用 @Query 注释:

@Modifying(clearAutomatically=true)

【讨论】:

    猜你喜欢
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    • 2015-04-13
    相关资源
    最近更新 更多