我的应用程序中有一个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'
不知道为什么会这样。当我使用hibernate生成的内容并插入绝对路径时,我确实可以在数据库中看到返回的元组。
有人处理过这个问题吗?如果有,你是如何解决这个问题的?我试过硬编码我的':path'变量为' '/data/myData/。设置%’"、"%/数据/myData/。设置%"、"//数据//myData//。设置%",但仍然没有返回任何内容。没有错误,但是我不明白为什么没有结果
你的查询语法错误,它看起来更像HQL查询而不是JPQL。正确的查询应该是这样的:
em.createQuery("SELECT f FROM MyFile f WHERE f.path LIKE :path");