【问题标题】:Delete on DATE TIME in Spring Boot JPA在 Spring Boot JPA 中的 DATE TIME 删除
【发布时间】:2021-04-13 14:27:27
【问题描述】:

我这里的代码很慢。它所做的只是收集具有特定实体列的所有行。

List<Data> slectedData = dataService.findByJobNameOrderByDateTime(selectJob.getValue().getName());
List<Data> deleteThese = slectedData.subList(firstIndex - 1, lastIndex);
    for (List<Data> deleteTheseLists : Lists.partition(deleteThese, 2000)) {
        dataService.deleteInBatch(deleteTheseLists);
}

然后我创建一个sub list 并且我想删除该子列表。 但是子列表可能非常大,然后dataService.deleteInBatch(deleteTheseLists); 会占用大量时间。

entity 类 Data 如下所示:

@Entity
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class Data {

    // ID
    @Id
    @GeneratedValue
    private long id;

    // Made by
    private String jobName;
    private String calibrationName;
    @Column(columnDefinition = "DATETIME(3)")
    private LocalDateTime dateTime;

    // Analog input
    private float sa0;
    private float sa1;
    private float sa1d;

}

我想删除dateTime。这在 Spring Boot JPA 中可能吗? 因为我无法在id 上删除,因为id 键在数据库中的索引不正确,因为有时数据库需要很长时间才能插入数据,有时速度很快。所以删除JPA中的entities是一种非常不安全的方式。

【问题讨论】:

标签: java spring spring-boot jpa spring-data-jpa


【解决方案1】:

是的,您可以通过 dateTime 使用 keywords 删除

//equals
deleteByDateTimeEquals(LocalDateTime dateTime);

// lessthan
deleteByDateTimeLessThan(LocalDateTime dateTime);

// greaterthan
deleteByDateTimeGreaterThan(LocalDateTime dateTime);

【讨论】:

  • 哇!谢谢!我会试试的!
  • 用@Modifying注释上面提供的每个方法
  • 顺便说一句!我可以有deleteByDateTimeGreaterThanAndLessThan(DateTime great, DateTime less) 吗?
猜你喜欢
  • 1970-01-01
  • 2021-09-28
  • 2017-12-11
  • 2016-08-25
  • 2020-01-21
  • 2019-08-14
  • 2019-07-09
  • 2019-07-17
  • 2011-08-02
相关资源
最近更新 更多