首页 文章

使用多个where子句删除spring数据jpa

提问于
浏览
2

我想从MySQL表中删除记录 .

我在扩展JpaRepositoy的界面中编写的查询是 .

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

I want to pass start_date which is less than or equal to end_date and end_date is greater than or equal to 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]

任何帮助,将不胜感激 .

1 回答

  • 1

    我假设delete语句是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);
    

相关问题