0

使用 java 如果我将 windows 路径存储在 h2 数据库中,然后尝试使用 Hibernate 通过匹配文件名来检索对象,即

public static List<Object[]> findSongsRecNoAndModifiedDateWithinFolder(Session session, String folder)
    {
        Query q = session.createQuery("select recNo, filename, lastModified from Song t1 where t1.filename like :filename");
        q.setParameter("filename", folder+'%', StandardBasicTypes.STRING);
        List<Object[]> results = (List<Object[]>)q.list();
        return results;
    }

我没有匹配。

如果我在添加到数据库时将所有 '\' 转换为 '/' 并尝试检索它所有工作,但这有点痛苦,我试图忽略 UNIX 和 Windows 文件路径之间的差异。

所以问题与 Windows 文件分隔符 '\' 也是 Java(和数据库)转义字符有关。但我真的不明白Java、数据库或休眠的问题,如果我能解决它。

4

1 回答 1

0

有关您的问题的答案,请参见http://groups.google.com/group/h2-database/browse_thread/thread/390eed5e21584faa?pli=1\ :是 H2 中的默认转义字符,您需要将其转义(使用另一个\) 如果您在 like 子句中使用它。

或者您可以将默认转义字符设置为空字符串以避免这种转义问题。请参阅http://www.h2database.com/javadoc/org/h2/constant/DbSettings.html并搜索“defaultEscape”。

于 2012-06-28T10:40:36.580 回答