jpa - Alternative namedquery for nativequery -


i need change query native-query (named-query or create-query) in jpa.

em = getentitymanager();      string query = "select kcu.table_name information_schema.key_column_usage kcu,information_schema.tables kt " +             "where kcu.referenced_table_name = 'sampletable1' " +             "and kcu.table_schema='sampledatabase' " +             "and kcu.referenced_column_name = 'samplerollnoid' " +             "and kt.table_name = kcu.table_name " +             "and kt.table_rows > 0 " +             "and kt.table_schema = kcu.table_schema";      list tablenamelist = (list) em.createnativequery(query).getresultlist(); 

this query returns tablenames (the tables names foreign key refer table (sampletable1)).

i got error when change createquery or namedquery.

like

list tablenamelist = (list) em.createquery(query).getresultlist();  or  list tablenamelist = (list) em.createnamedquery(query).getresultlist(); 

how change query namedquery or createquery. possible?

the following error, when use createquery

------------- standard error ----------------- log4j:warn no appenders found logger     (org.springframework.test.context.junit4.springjunit4classrunner). log4j:warn please initialize log4j system properly.  testcase: testentryinusenamedquery(com.jpasampledaotest):        caused error org.hibernate.hql.ast.querysyntaxexception: information_schema.key_column_usage not mapped  [select kcu.table_name information_schema.key_column_usage kcu,information_schema.tables kt kcu.referenced_table_name = 'sampletable1' , kcu.table_schema='sampledatabase' , kcu.referenced_column_name = 'samplerollnoid' , kt.table_name = kcu.table_name , kt.table_rows > 0 , kt.table_schema = kcu.table_schema]  java.lang.illegalargumentexception: org.hibernate.hql.ast.querysyntaxexception: information_schema.key_column_usage not mapped [select kcu.table_name information_schema.key_column_usage kcu,information_schema.tables kt kcu.referenced_table_name = 'sampletable1' , kcu.table_schema='sampledatabase' , kcu.referenced_column_name = 'samplerollnoid' , kt.table_name = kcu.table_name , kt.table_rows > 0 , kt.table_schema = kcu.table_schema]     @ org.hibernate.ejb.abstractentitymanagerimpl.throwpersistenceexception(abstractentitymanagerimpl.java:624)     @ org.hibernate.ejb.abstractentitymanagerimpl.createquery(abstractentitymanagerimpl.java:96)     @ org.springframework.orm.jpa.sharedentitymanagercreator$sharedentitymanagerinvocationhandler.invoke(sharedentitymanagercreator.java:193)     @ $proxy27.createquery(unknown source)  @ org.springframework.test.context.junit4.springtestmethod.invoke(springtestmethod.java:198)     @ org.springframework.test.context.junit4.springmethodroadie.runtestmethod(springmethodroadie.java:274)     @ org.springframework.test.context.junit4.springmethodroadie$2.run(springmethodroadie.java:207)     @ org.springframework.test.context.junit4.springmethodroadie.runbeforesthentestthenafters(springmethodroadie.java:254)     @ org.springframework.test.context.junit4.springmethodroadie.runwithrepetitions(springmethodroadie.java:234)     @ org.springframework.test.context.junit4.springmethodroadie.runtest(springmethodroadie.java:204)     @ org.springframework.test.context.junit4.springmethodroadie.run(springmethodroadie.java:146)     @ org.springframework.test.context.junit4.springjunit4classrunner.invoketestmethod(springjunit4classrunner.java:151)  caused by: org.hibernate.hql.ast.querysyntaxexception: information_schema.key_column_usage not mapped [select kcu.table_name information_schema.key_column_usage kcu,information_schema.tables kt kcu.referenced_table_name = 'sampletable1' , kcu.table_schema='sampledatabase' , kcu.referenced_column_name = 'samplerollnoid' , kt.table_name = kcu.table_name , kt.table_rows > 0 , kt.table_schema = kcu.table_schema]     @ org.hibernate.hql.ast.util.sessionfactoryhelper.requireclasspersister(sessionfactoryhelper.java:158)     @ org.hibernate.hql.ast.tree.fromelementfactory.addfromelement(fromelementfactory.java:87)     @ org.hibernate.hql.ast.tree.fromclause.addfromelement(fromclause.java:70)     @ org.hibernate.hql.ast.hqlsqlwalker.createfromelement(hqlsqlwalker.java:255)     @ org.hibernate.hql.antlr.hqlsqlbasewalker.fromelement(hqlsqlbasewalker.java:3056)     @ org.hibernate.hql.antlr.hqlsqlbasewalker.fromelementlist(hqlsqlbasewalker.java:2945)     @ org.hibernate.hql.antlr.hqlsqlbasewalker.fromclause(hqlsqlbasewalker.java:688)     @ org.hibernate.hql.antlr.hqlsqlbasewalker.query(hqlsqlbasewalker.java:544)     @ org.hibernate.hql.antlr.hqlsqlbasewalker.selectstatement(hqlsqlbasewalker.java:281)     @ org.hibernate.hql.antlr.hqlsqlbasewalker.statement(hqlsqlbasewalker.java:229)     @ org.hibernate.hql.ast.querytranslatorimpl.analyze(querytranslatorimpl.java:228)     @ org.hibernate.hql.ast.querytranslatorimpl.docompile(querytranslatorimpl.java:160)     @ org.hibernate.hql.ast.querytranslatorimpl.compile(querytranslatorimpl.java:111)     @ org.hibernate.engine.query.hqlqueryplan.<init>(hqlqueryplan.java:77)     @ org.hibernate.engine.query.hqlqueryplan.<init>(hqlqueryplan.java:56)     @ org.hibernate.engine.query.queryplancache.gethqlqueryplan(queryplancache.java:72)     @ org.hibernate.impl.abstractsessionimpl.gethqlqueryplan(abstractsessionimpl.java:133)     @ org.hibernate.impl.abstractsessionimpl.createquery(abstractsessionimpl.java:112)     @ org.hibernate.impl.sessionimpl.createquery(sessionimpl.java:1623)     @ org.hibernate.ejb.abstractentitymanagerimpl.createquery(abstractentitymanagerimpl.java:93) 

help me, in advance.

use jpql on sql. in jpql refer entities rather tables , properties rather columns.

use em.createquery() execute jpql query. em.createnamedquery() different purposes.


Comments

Popular posts from this blog

c# - SVN Error : "svnadmin: E205000: Too many arguments" -

c++ - Using OpenSSL in a multi-threaded application -

All overlapping substrings matching a java regex -