繁体   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