如何用反斜杠解析hibernate请求?

时间:2016-02-28 01:29:32

标签: database hibernate

我正在尝试使用hibernate查询从数据库中获取记录:

   File f = new File("D:/javaTest/2/vas/tumblr_nxxv9dOz881u3reero1_1280.jpg");
   Query q = session.createQuery("FROM FileData E WHERE E.name = 'tumblr_nxxv9dOz881u3reero1_1280.jpg' and E.path= "
   + f.getPath() + "' and  E.userId=9");

但收到:
Exception in thread "main" org.hibernate.QueryException: unexpected char: '\' [FROM trainee.model.FileData E WHERE E.name = 'tumblr_nxxv9dOz881u3reero1_1280.jpg' and E.path= D:\javaTest\2\vas\tumblr_nxxv9dOz881u3reero1_1280.jpg' and E.userId=9]
记录从file.getPath()方法存储的数据库中的文件路径。
据我所知,hiberante无法处理\
如何解决我的问题而不将数据库记录文件路径从D:\javaTest\2\vas\tumblr_nxxv9dOz881u3reero1_1280.jpg'更改为D:/javaTest/2/vas/tumblr_nxxv9dOz881u3reero1_1280.jpg'

1 个答案:

答案 0 :(得分:0)

您可以使用参数

String v = "\\s";
Query q = session.createQuery("from FileData where path = :v and ...");
q.setParameter("v", v);

<强> TEST

标签表[有一个现有的测试表,所以重复使用它]

Table

Session session = HibernateUtil.getSessionFactory().openSession();
String v = "D:\\javaTest\\2\\vas\\tumblr_nxxv9dOz881u3reero1_1280.jpg";
Query q = session.createQuery("from Tag where name = :v");
q.setParameter("v", v);

输出

Hibernate: select tag0_.tag_id as tag_id1_3_, tag0_.tag_name as tag_name2_3_, tag0_.tag_props as tag_prop3_3_ from tag tag0_ where tag0_.tag_name=?
Tag [id=1, name=D:\javaTest\2\vas\tumblr_nxxv9dOz881u3reero1_1280.jpg]
相关问题