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 に答える