【问题标题】:JPQL: How to include Forward Slash in Query String?JPQL:如何在查询字符串中包含正斜杠?
【发布时间】:2011-04-25 15:03:57
【问题描述】:

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

如果我这样做:

LOCATE('/', REVERSE( ...

我明白了:

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

但是,如果我这样做:

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

一切都很好。

那么,如何包含正斜杠?

编辑:我已经尝试了以下方法,但它们不起作用:

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

【问题讨论】:

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


    【解决方案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 版本。

    【讨论】:

    • 是的,你的权利......这是由于另一个错误。很抱歉给您带来不便,但无论如何感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2011-10-10
    • 2012-06-28
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    相关资源
    最近更新 更多