簡體   English   中英

JPQL Like語句未返回結果

[英]JPQL Like statement not returning results

我的應用程序中有一個FILE表(使用postgreSQL),該表存儲了我操作系統上文件的完整路徑。

當我嘗試執行“喜歡”查詢時,當我知道有保存的數據時,結果一直為零。

這是有問題的查詢:

public List<MyFile> getDirectoryFiles(Path path) {
        Query query = em.createQuery("from MyFile f WHERE f.path LIKE :path");
        query.setParameter("path", "////data////myData////.settings% ESCAPE '//'");  // hard coded the path for testing
        return query.getResultList();
}


@Override
public void deleteDirectoryFiles(Path path) {
    for(MyFile file : this.getDirectoryFiles(path)){
        this.delete(file);
    }
}


// in some other method I am deleting the files from a directory
Foo.deleteDirectoryFiles(this);  // points to '/data/myData/.settings'

不知道為什么會這樣。 當我選擇休眠產生的東西並插入絕對路徑時,我確實在數據庫中看到了返回的元組。

有沒有人處理過這個問題? 如果是這樣,您如何解決問題? 我嘗試將':path'變量硬編碼為“'/data/myData/.settings%'"、"%/data/myData/.settings%"、"//data//myData//.settings% ”,但仍未返回任何內容。 沒有錯誤,但是我無法弄清楚為什么沒有結果。

您的查詢語法有誤,它看起來更像是HQL查詢而不是JPQL。 正確的查詢應如下所示:

em.createQuery("SELECT f FROM MyFile f WHERE f.path LIKE :path");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM