OpenJPA
  1. OpenJPA
  2. OPENJPA-1782

Accept double quoted string literal in JPQL

    Details

    • Type: Improvement Improvement
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 2.1.0
    • Fix Version/s: None
    • Component/s: query
    • Labels:
      None

      Description

      A problem was found while using some Glassfish Java EE 6 samples with the OpenJPA provider.
      The sample was using double quotes for a literal on the "NOT LIKE" expression instead of the required single quotes:

      select count(l) from LogRecord l where l.record NOT LIKE "Canceling timer%"

      We do not allow double quoted literals in JPQL queries. The above JPQL resulted an error with text message:

      Lexical error at line 1, column 58. Encountered: "\"" (34), after : ""

        Activity

        Hide
        Catalina Wei added a comment -

        Double quoted string literals are allowed in JPQL.
        A double quoted string literal starts with a double quote - " and ends with a double quote, but it can not contain a double quote.
        A lexical error is reported if any double quotes appear within a double quoted string literal.
        For example, the following string literals are valid:
        "You're right"
        "This is a double quoted string literal"

        If you need double quote(s) in a string literal, enclose the string in single quotes, i.e. use single quoted string literal.
        For example, the following single quoted string literal contains a double quote:
        'This is a single quoted string literal that contains a double quote - ". '

        Show
        Catalina Wei added a comment - Double quoted string literals are allowed in JPQL. A double quoted string literal starts with a double quote - " and ends with a double quote, but it can not contain a double quote. A lexical error is reported if any double quotes appear within a double quoted string literal. For example, the following string literals are valid: "You're right" "This is a double quoted string literal" If you need double quote(s) in a string literal, enclose the string in single quotes, i.e. use single quoted string literal. For example, the following single quoted string literal contains a double quote: 'This is a single quoted string literal that contains a double quote - ". '
        Hide
        Catalina Wei added a comment -

        It is possible to allow double quoted string literals in JPQL.

        Show
        Catalina Wei added a comment - It is possible to allow double quoted string literals in JPQL.

          People

          • Assignee:
            Catalina Wei
            Reporter:
            Catalina Wei
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:

              Development