hello
we are developing a project.this project use spring, hibernate framework and oracle database.
spring framework version is 1.1 and hibernate version is 2.0
we set oracle dialect in applicationContext.xml.
there are 3 table that are Allowance,Payment,PaymentDetail.one field that is in Allowance table,
is total of PaymentDetail's one field with a formula.
I try to set a field with using hibernate formula property but
I get a error message.otherwise query in formula space run at sqlPlus properly and
Payment't give any error message.
The query in the formula runs properly with single query like follows
"(select sum(md.miktar) from PaymentDetail md where md.PaymentDetailId=3)"
but if there is join ,query don't work:
"(select sum(md.miktar) from PaymentDetail md , Payment m
where md.Paymentid=m.Paymentid and m.FIRSTALLOWANCEID=3 )"
how can I set this derived property?
hibernate xml file:
<hibernate-mapping>
<class name="tah.AllowanceDetail" table="AllowanceDetail">
<cache usage="read-write"/>
<id name="oid" column="AllowanceDetailID" unsaved- value="0">
<generator class="increment" />
</id>
<many-to-one name="Allowance" column="AllowanceID" not-null="true"/>
<many-to-one name="arrangement" column="ARRANGEMENTNO" not-null="true"/>
<property name="amount" column="AMOUNT" not-null="true"/>
<property name="amountSpent"
formula="(select sum(md.amount) from PaymentDetail md , Payment m
where md.Paymentid=m.Paymentid and m.FIRSTALLOWANCEID=ALLOWANCEID )"
type="double"/>
</class>
</hibernate-mapping>
error message:
Could not execute query
java.sql.SQLException: ORA-00907: missing right parenthesis
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(TTC7Protocol.java:830)
at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2391)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2672)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:527)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:205)
at net.sf.hibernate.impl.BatcherImpl.getResultSet(BatcherImpl.java:87)
at net.sf.hibernate.loader.Loader.getResultSet(Loader.java:800)
at net.sf.hibernate.loader.Loader.doQuery(Loader.java:189)
at net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:133)
at net.sf.hibernate.loader.Loader.doList(Loader.java:955)
at net.sf.hibernate.loader.Loader.list(Loader.java:946)
at net.sf.hibernate.hql.QueryTranslator.list(QueryTranslator.java:846)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1543)
at net.sf.hibernate.impl.QueryImpl.list(QueryImpl.java:39)
at org.springframework.orm.hibernate.HibernateTemplate$17.doInHibernate(HibernateTemplate.java:331)
at org.springframework.orm.hibernate.HibernateTemplate.execute(HibernateTemplate.java:150)
at org.springframework.orm.hibernate.HibernateTemplate.executeFind(HibernateTemplate.java:170)
at org.springframework.orm.hibernate.HibernateTemplate.find(HibernateTemplate.java:328)
at account.dao.hibernate.AccountDAOHibernate.retrieveAllowanceTertipler(AccountDAOHibernate.java:85)
at account.dao.AccountDAOTest.testRetrieveAllowanceTertipler(AccountDAOTest.java:32)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at junit.textui.TestRunner.doRun(TestRunner.java:116)
at junit.textui.TestRunner.doRun(TestRunner.java:109)
at junit.textui.TestRunner.run(TestRunner.java:72)
at junit.textui.TestRunner.run(TestRunner.java:57)
_________________ idris aras
Software Developer
|