如何正确转义JPQL查询字符串中的'/'正斜杠?
如果我这样做:
LOCATE('/', REVERSE( ...
我明白了:
javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query
但是,如果我这样做:
LOCATE('\\', REVERSE( ...
一切都很好。
那么,我如何包含正斜杠?
编辑:我已经尝试了以下内容但它们无法正常工作:
'\\/'
'//'
CHAR(47)
ESCAPE '/'
答案 0 :(得分:1)
无法使用提供的详细信息进行复制,以下内容适用于我:
@Test
public void testQueryWithLocateKeyword() {
Product p1 = new Product("1234/Foo");
Product p2 = new Product("12/Bar");
em.persist(p1);
em.persist(p2);
em.flush();
String qlString = "SELECT LOCATE('/', p.name) FROM Product p";
List actual = em.createQuery(qlString).getResultList();
List<Integer> expected = Arrays.asList(5, 3);
assertNotNull(actual);
ReflectionAssert.assertReflectionEquals(expected, actual);
}
使用Hibernate EM 3.5(和H2)测试。
请提供代表性查询,完整的堆栈跟踪,Hibernate版本。