Java 为什么JpaRpository.delete(entity)don';你真的不删除实体吗?

Java 为什么JpaRpository.delete(entity)don';你真的不删除实体吗?,java,hibernate,spring-data-jpa,Java,Hibernate,Spring Data Jpa,我有这个实体 @Builder @AllArgsConstructor @NoArgsConstructor @EqualsAndHashCode(onlyExplicitlyIncluded = true) @Data @Entity @Table(name = "visits") public class Visit { @EqualsAndHashCode.Include @Id @GeneratedValue(strategy = GenerationType.

我有这个实体

@Builder
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
@Data
@Entity
@Table(name = "visits")
public class Visit {

    @EqualsAndHashCode.Include
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @NotNull
    @Column(nullable = false, updatable = false)
    private long id;

    @Column
    private LocalDate date;

    @Column
    private LocalTime startTime;

    @Column
    private LocalTime endTime;

    @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name = "client_id")
    private Client client;

    @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name = "employee_id")
    private Employee employee;

    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(
            name = "services_booked",
            joinColumns = {@JoinColumn(name = "visit_id")},
            inverseJoinColumns = {@JoinColumn(name = "service_id")}
    )
    private Set<Service> servicesBooked = new HashSet<>();

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "visit")
    private Set<TimeSlot> timeSlots = new HashSet<>();

}
但实际上它并没有删除它。它执行顺序选择以解析链接实体。以下是该删除的日志记录:


就这些。为什么它不能执行删除操作?

控制器中的
visit.get()
是什么?“通过可选的.map检查isPresent”等等什么?你的
visitService.findVisitById()
看起来是什么样子?请仔细检查这可能类似/相同,因为你可以尝试使id非私有吗?
    @Transactional
    @DeleteMapping("/{id}")
    public ResponseEntity<DeleteVisitResponse> deleteVisit(@PathVariable("id") long visitId,
                                                           @RequestAttribute(USER_AUTH) UserAuthDto userAuthDto) {
// some logic    
            Optional<Visit> visit = visitService.findVisitById(visitId);
// check isPresent via Optional.map
            visitService.deleteVisit(visit.get());
// constructing the response
    }
@Override
public void deleteVisit(@NonNull Visit visit) {
    visitRepository.delete(visit);
}