2017-07-18 10 views
0

Ich habe folgendes db in postgresqldoppelte Anführungszeichen in Update-Abfrage

create table car_wash(
    id integer PK, 
    images text[] 
) 

Um einige Daten in Bilder einfügen Array Ich bin mit Federverschluß, ist dies Verfahren von meinem Repository-Schnittstelle

@Modifying 
    @Query(value = "update car_wash set images=array_append(images,'' || :item || '') where id =:id",nativeQuery = true) 
    void updateImage(@Param("item") String item,@Param("id")Integer id); 

Aber wenn ich eine Zeichenfolge wie F:\eclipse\workspace\TestMail\test.txt in db diesen Pfad ist mit doppelten Anführungszeichen "F:\eclipse\workspace\TestMail\test.txt" eingewickelt Ich habe keine Ahnung warum, aber wenn ich versuche, einige Zeichenfolgen aus Bildern aray mit dieser Abfrage UPDATE car_wash SET images= array_remove(images, '"F:\eclipse\workspace\TestMail\test.txt"'); zu löschen ist es nicht gelöscht.W Hut ist der Grund?

+0

Der Grund für das Löschen funktioniert am wahrscheinlichsten ist, dass die Anführungszeichen nicht Teil der sind Zeichenfolge, die in der Datenbank gespeichert ist. Warum die Saite dieses doppelte Zitat enthält, kann ich nicht sagen, besonders nicht ohne zu wissen woher es kommt. – Thomas

+0

Ich bin nur Datei auf Remote-Server speichern und tun Sie die folgenden private void addImageToCarWash (CarWash AutoWasch, Datei newImage) { carWashRepository.updateImage (newImage.getAbsolutePath(), carWash.getId()); } –

+0

Hmm, möchten Sie vielleicht versuchen, '... ': Element' ...' stattdessen. Da Sie die Abfrage ohnehin in Java erstellen, ist diese Zeichenfolgenverkettung nicht erforderlich. Versuchen Sie auch, Ihren Code zu debuggen, um zu sehen, wo die doppelten Anführungszeichen zur Zeichenkette hinzugefügt werden ('getAbsolutePath()' sollte das nicht tun). – Thomas

Antwort

0

Endlich fand ich eine Antwort. Ich weiß nicht warum, aber Frühling wrapp alle Pfad Zeichenfolgen in Anführungszeichen, um dies zu lösen, sollten Sie folgendes tun carWashRepository.updateImage(newImage.getAbsolutePath().replace("\\", "/"), carWash.getId());

Verwandte Themen