java - Create table with native SQL works for Hibernate/HSQLDB, insert fails. Why? -


i use hsqldb , hibernate. have implement functionality on database level (trigger ...) , because of have execute native sql. create new table (works) , try insert data (fails). sa such there should no access right violation. can guess why user lacks privilege or object not found: a492interface thrown?

this code (simplified):

session.createsqlquery("create table entity_table_map (entity_name varchar(50) not null primary key,table_name varchar(50) not null)").executeupdate(); session.createsqlquery("insert entity_table_map (entity_name,table_name) values (\"a429interface\",\"interface\")").executeupdate(); 

here relevant log:

[server@19616c7]: 0:sqlcli:sqlprepare create table entity_table_map (entity_name varchar(50) not null primary key,table_name varchar(50) not null) [server@19616c7]: 0:sqlcli:sqlexecute:5 [server@19616c7]: 0:sqlcli:sqlfreestmt:5 [server@19616c7]: 0:hsqlcli:getsessionattr [server@19616c7]: 0:sqlcli:sqlprepare insert entity_table_map (entity_name,table_name) values ("a492interface","interface") [server@19616c7]: [thread[hsqldb connection @13adc56,5,hsqldb connections @19616c7]]: 0:disconnected sa 

and here exception:

exception in thread "main" org.hibernate.exception.sqlgrammarexception: not execute native bulk manipulation query     @ org.hibernate.exception.sqlstateconverter.convert(sqlstateconverter.java:92)     @ org.hibernate.exception.jdbcexceptionhelper.convert(jdbcexceptionhelper.java:66)     @ org.hibernate.engine.query.nativesqlqueryplan.performexecuteupdate(nativesqlqueryplan.java:219)     @ org.hibernate.impl.sessionimpl.executenativeupdate(sessionimpl.java:1310)     @ org.hibernate.impl.sqlqueryimpl.executeupdate(sqlqueryimpl.java:396)     @ version.api.versionapi.setupdatabase(versionapi.java:38)     @ test.ui.versionui.setupdatabase(versionui.java:107)     @ test.setupdatabase.main(setupdatabase.java:9) caused by: java.sql.sqlsyntaxerrorexception: user lacks privilege or object not found: a492interface     @ org.hsqldb.jdbc.util.sqlexception(unknown source)     @ org.hsqldb.jdbc.util.sqlexception(unknown source)     @ org.hsqldb.jdbc.jdbcpreparedstatement.<init>(unknown source)     @ org.hsqldb.jdbc.jdbcconnection.preparestatement(unknown source)     @ org.hibernate.jdbc.abstractbatcher.getpreparedstatement(abstractbatcher.java:534)     @ org.hibernate.jdbc.abstractbatcher.preparestatement(abstractbatcher.java:116)     @ org.hibernate.jdbc.abstractbatcher.preparestatement(abstractbatcher.java:109)     @ org.hibernate.engine.query.nativesqlqueryplan.performexecuteupdate(nativesqlqueryplan.java:202)     ... 5 more 

update: seems can't execute insert statement. if try insert data other table fails, too. must doing realy dumb ... didn't see ...

details of error mentioned op.

session.createsqlquery("insert entity_table_map (entity_name,table_name)  values (\"a429interface\",\"interface\")").executeupdate(); 

in sql statement above, 2 inserted values strings, therefore single quote (sql quote character strings) must used.

when double quote (sql quote character variable, column , table names) used, engine expects find variables named "a429interface", "interface" insert table. no such variables exist, reports user lacks privilege or object not found: a492interface


Comments

Popular posts from this blog

linux - Using a Cron Job to check if my mod_wsgi / apache server is running and restart -

actionscript 3 - TweenLite does not work with object -

jQuery Ajax Render Fragments OR Whole Page -