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);
}