2017-07-18 118 views
0

我在PostgreSQL的以下DB雙引號

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

要插入一些數據圖像陣列我使用的是春天開機,這是從我的倉庫接口方法

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

但是,當我把一些字符串,如F:\eclipse\workspace\TestMail\test.txt分貝這個路徑是用雙引號"F:\eclipse\workspace\TestMail\test.txt" 我不知道爲什麼,但是當我試圖刪除圖像aray使用此查詢UPDATE car_wash SET images= array_remove(images, '"F:\eclipse\workspace\TestMail\test.txt"');一些字符串它不會被刪除.W帽子是原因嗎?

+0

刪除不工作的原因最有可能的是雙引號不是存儲在數據庫中的字符串。爲什麼字符串包含那些我不能說的雙引號,特別是不知道它來自哪裏。 – Thomas

+0

我只是將文件保存在遠程服務器中,並執行以下操作: private void addImageToCarWash(CarWash carWash,File newImage){carwashRepository.updateImage(newImage.getAbsolutePath(),carWash.getId()); } –

+0

嗯,你可能想試試'...':item'...'。由於您使用Java構建查詢,因此不需要該字符串連接。此外,請嘗試調試您的代碼,以查看雙引號添加到字符串的位置('getAbsolutePath()'不應該這樣做)。 – Thomas

回答

0

最後我找到了答案。我不知道爲什麼,但春天把所有的路徑字符串包裝成雙引號,解決這個問題你應該做下面的事情carWashRepository.updateImage(newImage.getAbsolutePath().replace("\\", "/"), carWash.getId());