2011-02-01 5 views
1

Tomcatでアプリケーションを実行してもエラーは発生しません。オラクル(OC4J)10.1.3上で動作しているとき、私は、次を得る:HQLはOracle AppServer 10.1.3ではなくTomcat上で動作しますか?

org.hibernate.hql.ast.QuerySyntaxError: unexpected end of subtree [ 
SELECT c, cc, pa, ta  
    FROM com.test.CASE c 
    LEFT OUTER JOIN c.personadmin pa   
    LEFT OUTER JOIN c.termadmin ta   
    LEFT OUTER JOIN c.caseChannel cc  
WHERE c.case_id IN() 
ORDER BY c.case_id, cc.caseChannelCd ] 
... 
Caused by: <AST>: unexpected end of subtree 

は、ライブラリの問題のように思えるが、私はまだ環境の間(休止状態に関する)いかなるinconsisntencyを発見していません。

このエラーはどのような原因が考えられますか?

編集:

はここにソースです:

String hql = " SELECT c, cc, pa, ta " 
       + "  FROM CASE c " 
       + "   LEFT OUTER JOIN c.personadmin pa " 
       + "   LEFT OUTER JOIN c.termadmin ta " 
       + "   LEFT OUTER JOIN c.caseChannel cc " 
       + " WHERE c.case_id IN (:caseIds) " 
       + " ORDER BY c.case_id, cc.caseChannelCd "; 

    Query query = getSession().createQuery(hql); 
    query.setParameterList("caseIds", caseIdList); 
    results = query.list(); 
+0

なぜなら、OracleImageListがOracleアプリケーションサーバー上で空であり、Tomcatに存在しなかったからです。根本的な原因はまだ調査されていますが、Spring WSサービスに影響する2つのXMLライブラリの違いに関係しているようです。 – jlpp

+0

それが他の人を助ける場合、根本的な原因はSpring-WSでマーシャリング/アンマーシャリングするためにJAXBを使用していることでした。この戦争では、JAXB(xjc)がマーシャリング・プロセスで使用されるBeanの横に作成されるpackage-info.javaクラスがありませんでした。 – jlpp

+0

もう1つ:Ant 1.7.1(Eclipseプラグイン)のバグのためにpackage-info.javaがコンパイルされませんでした。詳細については、https://issues.apache.org/bugzilla/show_bug.cgi?id=43114を参照してください。 pi.javaファイルに触れ、他のすべてのソースの前にコンパイルすることで修正されました。 – jlpp

答えて

4

それは、このエラーが一つの容器ではなく、他に起こることは本当に奇妙です。 ()

、IN c.case_idはこのように、それはまた、Tomcat上で失敗することを意味

:私はこの問題はここにあると思います。だから、私はあなたが実行しているクエリが両方で正確に同じかどうかを最初に検証します。

+1

これは正しいです、空のin節がこの問題を引き起こします、ちょうどこれが数ヶ月前に起こったのです。 –

+0

IN句の定義方法を示すソースを追加しました。このソースは正しいか? – jlpp

+1

音が良くなりましたが、コンテナに関連する問題ではないと私はまだ考えています。私の推測では、 'caseIdList'はOC4Jでは空であり、Tomcatでは空ではありません(ちょうど偶然かもしれません)。そのため、クエリーを実行する前にデバッグロギングを追加して、このコレクションのサイズを出力します。同じパラメータを使用して同じクエリを使用していることを確認します。 – jpkrohling

関連する問題