Я не могу выполнить мягкое удаление с @EmbeddedId?
Sql в @SQLDelete не выполняется.
Я попытался жестко закодировать значение двух идентификаторов, чтобы создать встроенный идентификатор.
Я могу получить работу по мягкому удалению для сущностей с помощью только @Id, а не
@ EmbeddedId
Когда я запускаю тест с удалением для сущностей с @Id, я вижу, что sql выполняется на консоли, но не с @ EmbeddedId.
Я думаю, что он просто обходит @SQLDelete и использует стандартное удаление sql из hibernate.
Я ожидаю, что sql внутри @SQLDelete выполняется.
@Data
@EqualsAndHashCode(exclude = "serviceEmployeeIdentity", callSuper = true)
@Entity
@Audited
@Table(name = "service_employee")
@SQLDelete(sql = "UPDATE service_employee " +
"SET deleted = true " +
"WHERE service_employee.service_id = ?1 " +
"AND service_employee.employee_b_number = ?2")
@Where(clause = "deleted = false")
public class ServiceEmployee extends Auditable implements Serializable {
@EmbeddedId
private ServiceEmployeeIdentity serviceEmployeeIdentity;
@Column(name = "critical")
private Boolean critical;
@Column(name = "critical_rationale")
private String criticalRationale;
}
@Repository
public interface ServiceEmployeeRepository extends
JpaRepository<ServiceEmployee, ServiceEmployeeIdentity> {}
// test
ServiceEmployee serviceEmployee = ServiceEmployeeBuilder.aServiceEmployee();
serviceEmployeeService.deleteById(
serviceEmployee.getServiceEmployeeIdentity());
Примечание:
serviceEmployee имеет встроенный идентификатор
serviceEmployeeService просто вызывает класс репозитория