Need help with Hibernate? Read this first:
http://www.hibernate.org/ForumMailingli ... AskForHelp
Hibernate version:
hibernate3.1
Mapping documents:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping
>
<class
name="imaginary.data.CustomerOrderCharge"
table="customerOrderCharge"
>
<id
name="id"
column="customerOrderChargeId"
type="int"
>
<generator class="native">
<!--
To add non XDoclet generator parameters, create a file named
hibernate-generator-params-CustomerOrderCharge.xml
containing the additional parameters and place it in your merge dir.
-->
</generator>
</id>
<many-to-one
name="customerOrder"
class="imaginary.data.CustomerOrder"
cascade="none"
outer-join="auto"
update="true"
insert="true"
column="customerOrderId"
/>
<property
name="chargeAmount"
type="java.math.BigDecimal"
update="true"
insert="true"
lazy="true"
column="chargeAmount"
/>
<many-to-one
name="creditCard"
class="imaginary.data.CreditCard"
cascade="all"
outer-join="auto"
update="true"
insert="true"
column="creditCardId"
/>
<property
name="paymentType"
type="int"
update="true"
insert="true"
column="paymentType"
/>
<property
name="tipPaid"
type="java.math.BigDecimal"
update="true"
insert="true"
lazy="true"
column="tipPaid"
/>
<property
name="troutD"
type="long"
update="true"
insert="true"
column="troutD"
/>
<!--
To add non XDoclet property mappings, create a file named
hibernate-properties-CustomerOrderCharge.xml
containing the additional properties and place it in your merge dir.
-->
</class>
</hibernate-mapping>
Code between sessionFactory.openSession() and session.close():
Criteria criteria = session.createCriteria(CustomerOrderCharge.class)
.setProjection( Projections.projectionList()
.add(Projections.sum("tipPaid"),"sumTipPaid")
.add(Projections.sum("chargeAmount"),"sumChargeAmount"))
.add(Restrictions.in("customerOrder",customerOrders));
Full stack trace of any exception that occurs:
java.lang.ArithmeticException: Rounding necessary
at java.math.BigDecimal.divide(Unknown Source)
at java.math.BigDecimal.setScale(Unknown Source)
at java.math.BigDecimal.setScale(Unknown Source)
at com.mysql.jdbc.ResultSet.getBigDecimalFromString(ResultSet.java:5506)
at com.mysql.jdbc.ResultSet.getNativeBigDecimal(ResultSet.java:4017)
at com.mysql.jdbc.ResultSet.getBigDecimal(ResultSet.java:548)
at com.mysql.jdbc.ResultSet.getBigDecimal(ResultSet.java:563)
at org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.getBigDecimal(DelegatingResultSet.java:304)
at org.hibernate.type.BigDecimalType.get(BigDecimalType.java:23)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:77)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:94)
at org.hibernate.loader.criteria.CriteriaLoader.getResultColumnOrRow(CriteriaLoader.java:123)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:329)
at org.hibernate.loader.Loader.doQuery(Loader.java:412)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
at org.hibernate.loader.Loader.doList(Loader.java:1593)
at org.hibernate.loader.Loader.list(Loader.java:1577)
at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:111)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1322)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:300)
at imaginary.service.DailySalesReportService.fetchTotalSalesByDailySales(DailySalesReportService.java:84)
at imaginary.action.ReportAction.getTotalSalesByDailySales(ReportAction.java:46)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194)
at org.apache.struts.actions.MappingDispatchAction.execute(MappingDispatchAction.java:169)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at imaginary.service.ITechFilter.doFilter(ITechFilter.java:21)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
Name and version of the database you are using:
Mysql 4.1 and mysql-connector-java-3.1.8-bin.jar
The generated SQL (show_sql=true):
Hibernate: select sum(this_.tipPaid) as y0_, sum(this_.chargeAmount) as y1_ from customerOrderCharge this_ where this_.customerOrderId in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
15:03:58,562 INFO BigDecimalType:132 - could not read column value from result set: y0_
Debug level Hibernate log excerpt: warn
It is working sometime, but sometimes give me an exception.
What' wrong with it? I don't know why..
help me....