mysql - 使用多个where子句在spring data jpa中删除

标签 mysql hibernate spring-boot spring-data-jpa jpql

我想从 MySQL 表中删除记录。

我在扩展 JpaRepositoy 的接口(interface)中编写的查询是。

@Modifying
@Transactional
@Query(value="DELETE FROM tablename WHERE end_date>=?1 and username=?2 and start_date <=?3)
void deleteByStart_dateAndUsernameAndEnd_date(Date start_date,String username,Date end_date);

我想传递小于或等于 end_date 且 end_date 大于或等于 start_date 的 start_date

我遇到以下异常:

org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [delete from com.poc.pa.model.tablename where end_date>=?1 and username=?2 and start_date <=?3]; nested exception is java.lang.IllegalStateException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [delete from com.poc.pa.model.tablename where end_date>=?1 and username=?2 and start_date <=?3]

如有任何帮助,我们将不胜感激。

最佳答案

我假设删除语句是一个 SQL 查询。因此,您必须在 Query 注释中声明它。只需添加 nativeQuery = true

@Transactional    
@Modifying
@Query(value="DELETE FROM tablename WHERE end_date>=?1 and username=?2 and start_date <=?3, 
    nativeQuery = true)
void deleteByStart_dateAndUsernameAndEnd_date(Date start_date,String username,Date end_date);

关于mysql - 使用多个where子句在spring data jpa中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48520504/

相关文章:

MySQL:GET_LOCK 限制和问题

c# - 如何使用foreach将datagridview记录插入mysql数据库

MySQL:可以在存储过程的更新中使用内部联接吗?

java - infinispan hibernate 缓存驱逐

java - Hibernate 事务内自定义 id 生成

java - Hibernate 需要开始并提交读取

java - 堆栈在 ec2 实例上不存在错误,但在本地工作正常

java - Spring Boot jar 找不到 index.html

mysql - 如何在 bash 中捕获 mysql 错误

spring - 为什么在 Spring Boot 2.2.4 中没有加载 restTemplateBuilder?