2011-09-13 17 views
1

私は問題にstrutsとhibernateを使用しています。私は、次のクエリを試してみました休止状態でのクエリーを開く

String hql ="insert into "+ 
     "OPENQUERY(OracleLinkedServer, \'SELECT * FROM  report_access_log\') "+ 
     "(CALLINGHOST, ACCESSTIMESTAMP, HTTPREQUESTMETHOD, ACCESSURL,"+ 
     "HTTPRESPONSECODE, HTTPRESPONSETIMEMILLI, USERNAME, REPORTNAME, ID)"+ 
     " values "+ 
     "(:CALLINGHOST,:ACCESSTIMESTAMP,:HTTPREQUESTMETHOD,:ACCESSURL,:HTTPRESPONSECODE," + 
     ":HTTPRESPONSETIMEMILLI,:USERNAME,:REPORTNAME,"+ 
     "(select * from OPENQUERY(OracleLinkedServer,"+ 
       "\'select SQ_RPT_ACC_LOG_ID.nextval from dual\')))"; 
     Query query=session.createQuery(hql); 
     query.setString("CALLINGHOST", userLogReport.get(0).toString()); 
     query.setDate("ACCESSTIMESTAMP", (Date)userLogReport.get(1)); 
     query.setString("HTTPREQUESTMETHOD", userLogReport.get(2).toString()); 
     query.setString("ACCESSURL", userLogReport.get(3).toString()); 
     query.setString("HTTPRESPONSECODE", userLogReport.get(4).toString()); 
     query.setInteger("HTTPRESPONSETIMEMILLI", (Integer)userLogReport.get(5)); 
     query.setString("USERNAME", userLogReport.get(6).toString()); 
     query.setString("REPORTNAME", userLogReport.get(7).toString()); 

insert into OPENQUERY(OracleLinkedServer, 'SELECT * FROM report_access_log')  
(CALLINGHOST, ACCESSTIMESTAMP, HTTPREQUESTMETHOD, ACCESSURL,HTTPRESPONSECODE, 
HTTPRESPONSETIMEMILLI, USERNAME, REPORTNAME, ID) values 
(:CALLINGHOST,:ACCESSTIMESTAMP,:HTTPREQUESTMETHOD,:ACCESSURL,:HTTPRESPONSECODE:HTTPRESPONSE 
TIMEMILLI,:USERNAME,:REPORTNAME,(select * from OPENQUERY(OracleLinkedServer,'select 
SQ_RPT_ACC_LOG_ID.nextval from dual'))) 

iは、カラム(CALLINGHOST、あるなし79でクエリ構文の例外を取得し、次のようにコンソールに印刷されたクエリが...ある

しかし、私はSQLでクエリを実行したときに実行されています。クエリは次のとおりです。

insert into OPENQUERY(OracleLinkedServer, 'SELECT * FROM report_access_log') 
(CALLINGHOST, ACCESSTIMESTAMP, HTTPREQUESTMETHOD, ACCESSURL,HTTPRESPONSECODE, 
HTTPRESPONSETIMEMILLI, USERNAME, REPORTNAME, ID) values 
('10.87.192.246','GET','/cci/bby/ImageViewer/viewImages.action','200',6,'su','Insert 
Review',(select * from OPENQUERY(OracleLinkedServer,'select SQ_RPT_ACC_LOG_ID.nextval 
from dual'))) 

問題を解消し、Javaから実行するためのソリューションを提供してください。 ありがとうございます。

答えて

1

HQLとSQLは、2つの異なる言語です。 HQLは、Hibernateエンティティ、そのプロパティ、およびそれらの間の関連付けに作用します。 SQLはデータベースのテーブルとカラムで動作します。むしろ

Query query = session.createQuery(hql); 
+0

おかげJBより

使用

Query query = session.createSQLQuery(sql); 

...監督は私の側に... :-) – rozar

+0

はおっと..私はお互いの問題を得ました。私はsession.createSQLQuery()を使用し、次のようになっています。org.hibernate.exception.SQLGrammarException:ネイティブの一括操作クエリを実行できませんでした。 私はGoogleでsession.createQuery()を使用する必要があることを知りました。任意の可能な解決策??? まずはJBに感謝します。 – rozar

+0

クエリ、それを実行するために使用されたJavaコード、および例外スタックトレースを別の質問に投稿します。 –