Junit HSQLDB - user lacks privilege or object not found - THIS_.oh-ordnbr -


i getting exception when column name contains hyphen "-"

    entity : entity name.     @entity     @table(name = "requestheader")     public class requestheader implements serializable {      ....     ....         @column(name = "`oh-ordnbr`")     private integer ohordnbr; 

schema definition: query schema creation.

    create memory table pub.requestheader(            requestid integer,            imuserid integer,            requestdate date,            requesttime integer,            requeststatus varchar(19),            requesttype varchar(22),            headerinstructions varchar(5150),            dateformat varchar(20),            timeformat varchar(20),            languageid integer,            "oh-ordnbr" integer,            "oh-trcnstamp" integer,            ispickuplist bit(1),            constraint "rqh-1" primary key(requestid)      ); 

the error below:

exception stack: error message have received running junit. caused by: org.hsqldb.hsqlexception: user lacks privilege or object not found: this_.oh-ordnbr @ org.hsqldb.error.error.error(unknown source) @ org.hsqldb.error.error.error(unknown source) @ org.hsqldb.expressioncolumn.checkcolumnsresolved(unknown source) @ org.hsqldb.queryexpression.resolve(unknown source) @ org.hsqldb.parserdql.compilecursorspecification(unknown source) @ org.hsqldb.parsercommand.compilepart(unknown source) @ org.hsqldb.parsercommand.compilestatement(unknown source) @ org.hsqldb.session.compilestatement(unknown source) @ org.hsqldb.statementmanager.compile(unknown source) @ org.hsqldb.session.execute(unknown source) 

could 1 me in fixing this?

the reason object not found error fact oh-ordnbr column defined case sensitive (this due double quotes put around it).

you have 2 possible solutions:

  1. do not use dashes (hyphens) in sql. bad practice anyway, use underscores instead.
  2. update jpa annotation follows:

      @column(name = "`oh-ordnbr`")   private integer ohordnbr; 

i recommend using underscores instead of dashes, never know weirdness different jpa implementations might have when using second solution.