Не могли бы вы помочь мне решить следующую проблему?
У меня есть объект:
@Entity
public class Logging {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@Column(name = "domain")
private String domain;
@Column(name = "time_stamp")
private Date timeStamp;
У меня также есть:
public interface LoggingRepository extends CrudRepository<Logging, Integer> {
// @Query("Delete from Logging l WHERE l.timeStamp < ?1 AND l.domain =?2")
void deleteLoggingTimeStampBeforeAndByDomain(Date timeStamp, String domain);
}
Использование CrudRepository
Я хочу удалить записи журнала, которые меньше, чем dateX и Logging.domain = myDomain.Что-то вроде:
DELETE from Logging l WHERE l.time_stamp < '2018-05-22 21:32:26' AND l.domain = 'abc.com'.
В столбце базы данных time_stamp
выглядит как 2018-05-22 21:32:26
В моей таблице MySQL протоколирование time_stamp
имеет тип TIMESTAMP.
Я используюВесенний ботинок.На самом деле я получаю следующую ошибку:
Произошла непредвиденная ошибка (тип = Внутренняя ошибка сервера, статус = 500).Значение параметра [2018-05-22 21: 32: 36.0] не соответствует ожидаемому типу [java.lang.String (n / a)];вложенным исключением является java.lang.IllegalArgumentException: значение параметра [2018-05-22 21: 32: 36.0] не соответствует ожидаемому типу [java.lang.String (н / п)]
РЕДАКТИРОВАТЬ: Когда яизмените метод emy на:
@Query("Delete from Logging l WHERE timeStamp < :timeStamp AND domain =:domain")
void deleteLoggingTimeStampBeforeAndByDomain(@Param("timeStamp") Date timeStamp, @Param("domain") String domain);
Я получаю ошибку:
org.hibernate.hql.internal.QueryExecutionRequestException: не поддерживается для операций DML [Удалить из объекта.Logging l WHERE timeStamp <: timeStamp AND domain =: domain] </p>
У вас есть идеи?Я провел много часов, но, к сожалению, безуспешно.Я пробовал с @Query
и специальным соглашением об именах без @Query
.