Description
OpenJPA does not escape reserved words in SQL queries when they are used as column names. To escape a reserved name you just put it in quotes:
INSERT INTO FB_PRIVILEGES (comment, inheritable, level, role, type, username, item_uuid) ...
on oracle, becomes
INSERT INTO FB_PRIVILEGES ("comment", inheritable, "level", role, "type", username, item_uuid) ...
Looking at the code in DBDictionary, it appears that the escaping is done for table and sequence names by appending a numeral to the name. There isn't really any good reason to do this instead of quoting the identifier.
table.name identifiers would have to be escaped as "table"."name" if both table and name were reserved words.
Attachments
Issue Links
- is fixed by
-
OPENJPA-2182 DB dictionaries do not properly process reserved words for column names
- Closed
- is related to
-
OPENJPA-1304 Refactor naming policy of database schema elements
- Open