JPQL:如何在查询字符串中包含Forward Slash?

时间:2010-10-14 20:12:24

标签: sql-server hibernate jpa jpa-2.0 jpql

如何正确转义JPQL查询字符串中的'/'正斜杠?

如果我这样做:

LOCATE('/', REVERSE( ...

我明白了:

javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query

但是,如果我这样做:

LOCATE('\\', REVERSE( ...

一切都很好。

那么,我如何包含正斜杠?

编辑:我已经尝试了以下内容但它们无法正常工作:

'\\/'
'//'
CHAR(47)
ESCAPE '/'

1 个答案:

答案 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版本。