Hei,
Problemet her er egentlig ikke relatert til SQL, men til HQL (Hibernate Query Language). Hibernate bryr seg om datatyper, men SQL gjør ikke det på samme måte.
Egentlig er det slik at det er riktig at feilen oppstår, slik den gjør med PostgreSQL. Det at det ikke skjer i H2 er det som er rart. Det kan være at H2 og hibernate gjør noe galt som PostgreSQL og hibernate ikke gjør galt. Det er også grunnen at dette ikke er blitt oppdaget, da CI benytter seg utelukkende av H2.
Grunnen dette oppsto er at vi byttet fra datatype varchar(32) på systemID feltet til datatype UUID. Da må vi sørge for at alle spørringer bruker samme datatype. Det er også mulige å _caste_ i HQL.
Det som forvirrer meg litt her er at H2 støtter UUID datatypen også (https://www.h2database.com/html/datatypes.html#uuid_type). Feilen burde oppstått uansett.
Thomas ________________________________ Fra: Petter Reinholdtsen pere@hungry.com Sendt: fredag 25. april 2025 11:26 Til: nikita-noark@nuug.no nikita-noark@nuug.no Emne: [patch] Fiks DELETE med PostgreSQL som database
Basert på innspill og observasjoner fra Thomas etter at jeg oppdaget problemer med DELETE i runtest mot UiOs PostgreSQL-baserte instans, så har jeg nettopp testet følgende endring og kan bekrefte at det løste problemet.
diff --git a/src/main/java/app/service/noark5/NoarkService.java b/src/main/java/app/service/noark5/NoarkService.java index 7bbc53e45..37df092e7 100644 --- a/src/main/java/app/service/noark5/NoarkService.java +++ b/src/main/java/app/service/noark5/NoarkService.java @@ -157,7 +157,7 @@ public class NoarkService protected void disassociateForeignKeys( SystemIdEntity entity, String deleteString) { Query query = entityManager.createNativeQuery(deleteString); - query.setParameter(ID, entity.getSystemIdAsString()); + query.setParameter(ID, entity.getSystemId()); query.executeUpdate(); }
Hvis det i tillegg er riktig løsning, så foreslår jeg at den tas inn i master.
Jeg forstår riktignok ikke helt hvorfor PostgreSQL ikke liker en UUID som string, og hvorfor dette løser noe, da min forståelse er at SQL-en er lik og burde tolkes på samme vis, så lenge strengen faktisk representerer en UUID.
-- Vennlig hilsen Petter Reinholdtsen _______________________________________________ nikita-noark mailing list -- nikita-noark@nuug.no To unsubscribe send an email to nikita-noark-leave@nuug.no