Uploaded image for project: 'OpenJPA'
  1. OpenJPA
  2. OPENJPA-1145

Reserved keywords in the DBDictionary isn't being used for table names

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • jdbc
    • None

    Description

      First reported on the mailing list[1].
      --------
      I ran into a problem(I think) when doing some testing on Derby where I have
      an Entity named User and I'm having OpenJPA build my DB tables. Since 'User'
      is a reserved word on Derby, the SQL that OpenJPA generates to create my
      User table blows up[2].

      Each DBDictionary has a set of 'reserved words' but that list of words isn't
      used for table names, they are only used for column names. If a column name
      matches a reserved word, we append a 0 to the name or something like that.
      I'm wondering if we should do something similar with the table names?.

      I'm going to try to find some time soon here to look at the spec to see if
      this issue is discussed. Any thoughts or comments?

      -Rick
      [1]http://n2.nabble.com/Using-reserved-keywords-for-Entity-names-td3156045.html
      [2
      6484 embeddables TRACE [main] openjpa.jdbc.SQL - <t 24634836, conn
      9566840> executing stmnt 24008846 CREATE TABLE User (id INTEGER NOT NULL,
      USER0 VARCHAR(255), user_name VARCHAR(255), city VARCHAR(255), state
      VARCHAR(255), street VARCHAR(255), zip INTEGER, COORDINATES_ID INTEGER,
      number VARCHAR(255), type VARCHAR(255), PRIMARY KEY (id))
      6484 embeddables TRACE [main] openjpa.jdbc.SQL - <t 24634836, conn
      9566840> [0 ms] spent
      Exception in thread "main" <openjpa-0.0.0-rnull nonfatal general error>
      org.apache.openjpa.persistence.PersistenceException: Syntax error:
      Encountered "User" at line 1, column 14.

      {stmnt 24008846 CREATE TABLE User (id INTEGER NOT NULL, USER0 VARCHAR(255), user_name VARCHAR(255), city VARCHAR(255), state VARCHAR(255), street VARCHAR(255), zip INTEGER, COORDINATES_ID INTEGER, number VARCHAR(255), type VARCHAR(255), PRIMARY KEY (id))}

      [code=30000, state=42X01]
      at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:553)
      at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:453)
      at ....JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:159)

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              curtisr7 Richard G. Curtis
              Votes:
              2 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated: