我想从 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/