QA@IT

Hibernate SUM関数を使用すると、UnsupportedOperationExceptionが発生する

1969 PV

いつもお世話になっております。

現在、Hibernate3.2.7を使っているアプリケーションをCosminexusからWebSphereApplicationServerへの載せ替えをしています。

載せ替えたアプリケーションを稼動させることはできたのですが、以下のSQLが実行される箇所で、UnsupportedOperationExceptionが発生しています。
該当のHQLで、DECODEやSUM関数、SUBSTR関数を使っているため、
ひとつずつ取り除いて確認したところ、
SUM関数の有無でロジックが正常終了することがわかりました。

ただ、SUM関数自体はHQLでも使用可能とあり、
antlr-2.7.6.jarがビルドパス上にあれば、問題ない認識でいるので、
どこを修正すべきなのか悩んでおります。

SUM関数の制限、関数使用に当たっての設定、または代替案などご存知の方が
いらっしゃいましたら、ご教授頂ければと思います。

よろしくお願いいたします。

なお、WebSphereApplicationServerは8.5.5で、DBはDB2 v10を使用しています。

■実行したHQL

SELECT DECODE(SUM(KINGAKU),"",0,SUM(KINGAKU)) FROM DB.TORIHIKI TORIHIKI, DB.TEIGI TEIGI WHERE ID = :id and TORIHIKI.CODE=TEIGI.CODE AND SUBSTR(TORIHIKI.INPUT_TIMESTAMP,1,8) = :torihikiDate

■エラー箇所

org.hibernate.ejb.AbstractEntityManagerImpl throwPersistenceException Unable to mark for rollback on PersistenceException: java.lang.UnsupportedOperationException
at org.hibernate.transaction.WebSphereExtendedJTATransactionLookup$TransactionManagerAdapter.setRollbackOnly(WebSphereExtendedJTATransactionLookup.java:103)
at org.hibernate.ejb.AbstractEntityManagerImpl.markAsRollback(AbstractEntityManagerImpl.java:432)
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:587)
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:647)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:73)

■persistence.xmlのproperties設定内容

<property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JTATransactionFactory" />
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.WebSphereExtendedJTATransactionLookup" />
<property name="jta.UserTransaction" value="java:comp/UserTransaction" />
<property name="hibernate.connection.provider_class" value="jp.xyw.app.entity.XywConnectionProvider" />
<property name="hibernate.dialect" value="org.hibernate.dialect.DB2Dialect" />
<property name="hibernate.current_session_context_class" value="jta" />
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider" />

■読み込んでいるjar

Hibernate3.jar
antlr-2.7.6.jar
asm.jar
commons-collections-2.0.jar
commons-logging-1.1.jar
db2jcc4.jar
dom4j-1.6.1.jar
ejb3-persistence.jar
hibernate-annotations.jar
hibernate-entitymanager.jar
jboss-archive-browing.jar
ウォッチ

この質問への回答やコメントをメールでお知らせします。