2012-06-28 32 views
0

用java如果我存储在一个H2数据库窗口的路径,然后尝试通过在文件名 即贮藏Windows路径在数据库和使用Java

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; 
    } 

我匹配检索使用Hibernate对象与Hibernate检索没有匹配。

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

所以这个问题是与Windows文件分隔符'\'也是Java(和数据库)转义字符。但我不明白的是Java,数据库或休眠的问题,以及我是否可以解决它。

回答

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”。

+0

Thankyou,那工作我已经改变了上面的方法来做folder.replace(“\\”,“\\\\”) –