在 Spring Data JPA 中,可以使用以下派生查询方法来查找特定 taskId、deleted 为 false 且 updateTime 最大的实体:

// 方法一:使用 First 和 OrderBy
Optional<YourEntity> findFirstByTaskIdAndDeletedFalseOrderByUpdateTimeDesc(Long taskId);

// 方法二:使用 Top1 和 OrderBy
Optional<YourEntity> findTop1ByTaskIdAndDeletedFalseOrderByUpdateTimeDesc(Long taskId);

这两种方法的区别:

使用示例:

Optional<YourEntity> result = repository.findFirstByTaskIdAndDeletedFalseOrderByUpdateTimeDesc(taskId);
result.ifPresent(entity -> {
    // 处理找到的实体
    System.out.println("最新未删除记录: " + entity.getUpdateTime());
});

如果需要处理多个条件或更复杂的查询,也可以考虑使用 @Query 注解:

@Query("SELECT e FROM YourEntity e WHERE e.taskId = :taskId AND e.deleted = false ORDER BY e.updateTime DESC")
Optional<YourEntity> findLatestByTaskIdAndNotDeleted(@Param("taskId") Long taskId, Pageable pageable);

// 调用时传入 PageRequest.of(0, 1)
Optional<YourEntity> result = repository.findLatestByTaskIdAndNotDeleted(taskId, PageRequest.of(0, 1))
    .stream()
    .findFirst();