【发布时间】:2021-02-11 04:59:33
【问题描述】:
我有一个名为“otp”的表,我需要删除超过某个时间段的记录,现在假设为 5 分钟。 我将 Spring Framework 与休眠与 MySql 一起使用。我尝试了所有可能的方法,在 DTO 界面中编写了一个“@Query”,尝试了 Spring Data 查询方式,我什至尝试对记录进行“选择”。在代码中运行时,它不会选择任何记录,也不会删除任何早于要求的时间段的记录。当我将“查询”语句复制到 MySQL 工作台中时,它确实可以工作,我只需要将数据库名称放在表名前面即可使其工作。下面是代码的 sn-ps。我删除了“@ Query" 语句并保留 Spring Data 查询。
提前感谢您的帮助。
实体或模型。 '
@Getter
@Setter
@NoArgsConstructor
@Entity
@Table(name = "otp")
public class Otp {
@Id
@Column(name="phoneNumber")
private String phoneNumber;
@Column(name="otp")
private String otp;
@Column(name="createdOn", nullable = false, updatable = false)
@CreationTimestamp
private Timestamp createdOn;
}
`
必须删除行的代码。
'
@Repository
public interface OTPdto extends CrudRepository<Otp, String> {
@Modifying
@Transactional
void deleteByCreatedOnLessThan(Object now);
}
'
构建查询日期的代码。
'
Date now = Date.from(Instant.now());
Object param = new java.sql.Timestamp(now.getTime());
otPdto.deleteByCreatedOnLessThan(param);
'
【问题讨论】:
-
只是好奇。为什么?