如何通过Spring Boot JPA为表字段设空值?报错QueryCreationException求助
解决Spring Data JPA批量将字段设为Null的运行错误
你的代码里存在两个关键问题,导致了QueryCreationException错误:
- 方法调用拼写错误:Repository中定义的方法是
setNull(),但Service调用时写成了rsetNull()(多了一个字母r),这会导致找不到对应方法,先修正这个拼写问题。 - 查询语法不匹配:
@Query默认使用JPQL查询,需要基于实体类和实体属性编写语句,而非数据库表名和列名。如果要直接操作数据库表结构,需开启原生SQL支持。
修正后的代码示例
方式1:使用JPQL(推荐,面向实体)
假设对应数据库表的实体类名为TableName,目标字段的实体属性名为columnName,Repository代码修改为:
@Modifying @Transactional @Query("update TableName t set t.columnName = null") void setNull();
方式2:使用原生SQL
如果需要直接操作数据库表和列,给@Query添加nativeQuery = true参数:
@Modifying @Transactional @Query(value = "update table_name set column_name = null", nativeQuery = true) void setNull();
Service层调用修正
将错误的调用语句改为:
myRepository.setNull();
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

