move deletion of debitorRel from JPA Cascade to SQL after delete trigger
This commit is contained in:
parent
37c1886845
commit
9997563883
@ -19,6 +19,10 @@ import jakarta.persistence.*;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import static jakarta.persistence.CascadeType.DETACH;
|
||||||
|
import static jakarta.persistence.CascadeType.MERGE;
|
||||||
|
import static jakarta.persistence.CascadeType.PERSIST;
|
||||||
|
import static jakarta.persistence.CascadeType.REFRESH;
|
||||||
import static java.util.Optional.ofNullable;
|
import static java.util.Optional.ofNullable;
|
||||||
import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.Column.dependsOnColumn;
|
import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.Column.dependsOnColumn;
|
||||||
import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.Nullable.NOT_NULL;
|
import static net.hostsharing.hsadminng.rbac.rbacdef.RbacView.Nullable.NOT_NULL;
|
||||||
@ -74,7 +78,7 @@ public class HsOfficeDebitorEntity implements HasUuid, Stringifyable {
|
|||||||
@Column(name = "debitornumbersuffix", columnDefinition = "numeric(2)")
|
@Column(name = "debitornumbersuffix", columnDefinition = "numeric(2)")
|
||||||
private Byte debitorNumberSuffix; // TODO maybe rather as a formatted String?
|
private Byte debitorNumberSuffix; // TODO maybe rather as a formatted String?
|
||||||
|
|
||||||
@ManyToOne(cascade = CascadeType.ALL)
|
@ManyToOne(cascade = { PERSIST, MERGE, REFRESH, DETACH }, optional = false)
|
||||||
@JoinColumn(name = "debitorreluuid", nullable = false)
|
@JoinColumn(name = "debitorreluuid", nullable = false)
|
||||||
private HsOfficeRelationEntity debitorRel;
|
private HsOfficeRelationEntity debitorRel;
|
||||||
|
|
||||||
|
@ -23,6 +23,39 @@ create table hs_office_debitor
|
|||||||
--//
|
--//
|
||||||
|
|
||||||
|
|
||||||
|
-- ============================================================================
|
||||||
|
--changeset hs-office-debitor-DELETE-DEPENDENTS-TRIGGER:1 endDelimiter:--//
|
||||||
|
-- ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
Trigger function to delete related rows of a debitor to delete.
|
||||||
|
*/
|
||||||
|
create or replace function deleteHsOfficeDependentsOnDebitorDelete()
|
||||||
|
returns trigger
|
||||||
|
language PLPGSQL
|
||||||
|
as $$
|
||||||
|
declare
|
||||||
|
counter integer;
|
||||||
|
begin
|
||||||
|
DELETE FROM hs_office_relation r WHERE r.uuid = OLD.debitorRelUuid;
|
||||||
|
GET DIAGNOSTICS counter = ROW_COUNT;
|
||||||
|
if counter = 0 then
|
||||||
|
raise exception 'debitor relation % could not be deleted', OLD.debitorRelUuid;
|
||||||
|
end if;
|
||||||
|
|
||||||
|
RETURN OLD;
|
||||||
|
end; $$;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Triggers deletion of related details of a debitor to delete.
|
||||||
|
*/
|
||||||
|
create trigger hs_office_debitor_delete_dependents_trigger
|
||||||
|
after delete
|
||||||
|
on hs_office_debitor
|
||||||
|
for each row
|
||||||
|
execute procedure deleteHsOfficeDependentsOnDebitorDelete();
|
||||||
|
|
||||||
|
|
||||||
-- ============================================================================
|
-- ============================================================================
|
||||||
--changeset hs-office-debitor-MAIN-TABLE-JOURNAL:1 endDelimiter:--//
|
--changeset hs-office-debitor-MAIN-TABLE-JOURNAL:1 endDelimiter:--//
|
||||||
-- ----------------------------------------------------------------------------
|
-- ----------------------------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user